I need to make a HTTP request and determine the response size in bytes. I have always used request
for simple HTTP requests, but I am wondering if I can achieve this using raw?
>>> r = requests.get('https://github.com/', stream=True) >>> r.raw
My only problem is I don't understand what raw returns or how I could count this data-type in bytes? Is using request
and raw the right approach?
You can Use HTTPRequest and HTTPResponse class method getBodyAsBlob(); to get the response body in blob and then you can check the size. httpRequest. getBodyAsBlob(). size(); httpResponse.
The response limit is 9,223,372,036,854,775,807 bytes (2 ** 64).
A valid Content-Length field value is required on all HTTP/1.0 request messages containing an entity body.
Just take the len()
of the content of the response:
>>> response = requests.get('https://github.com/') >>> len(response.content) 51671
If you want to keep the streaming, for instance if the content is (too) large you can iterate over chunks of the data and sum their sizes:
>>> with requests.get('https://github.com/', stream=True) as response: ... size = sum(len(chunk) for chunk in response.iter_content(8196)) >>> size 51671
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With