HTTP响应内容长度w gzip



我正在使用Python的请求库发出get请求,并将内容流式传输到一个文件中。我想添加一个进度条,方法是将进度条的最大值设置为resp.headers['content-length'],并使用chunksize=1字节(response.iter_content(chunk_size=1))迭代响应。但是,响应的内容编码是gzip,因此内容长度指的是压缩后的大小。

使用以下代码:

resp = requests.get(...., stream=True)
count = 0
for x in resp.iter_content(chunk_size=1):
  count += 1

我得到:count=64和resp.headers['content-length']=127。

我应该使用什么作为进度条的最大值?

我会使用Kenneth的clint并这样做。或者,您应该将进度条的实现设置为从127开始更新。

from clint.textui import progress
import requests

resp = requests.get(url, stream=True)
total_length = int(resp.headers.get('content-length'))
for chunk in progress.bar(resp.iter_content(chunk_size=1), expected_size=(total_length / 1) + 1):
    pass

相关内容

  • 没有找到相关文章

最新更新