关于 Python requests模块的 stream参数
报文过大使用迭代用
demo
import requestsbase_url="http://httpbin.org/"r = requests.get(base_url+'/stream/10', stream=True)
response_body解析: 以n分割
for lines in r.iter_lines():print("lines:", lines)
response_body解析: 字节数分割
for chunk in r.iter_content(chunk_size=1024):print("chunk:", chunk)
源码查看
requests.sessions
截图部分是 class Session 的 send 方法, 该处是stream参数实际生效的部分, 可以看到stream=False时是执行了r.content部分, 进入查看可以看到.
requests.models
是对Response的实例属性_content赋值了, 即将报文一次性全部加载到了内存中, 而stream=True则没有该步骤, 所以加入此参数的意义只有一个就是在加载一些图片或者文件之类的大尺寸报文时不会一次性把报文全部加载到内存中, 转而通过 上述的迭代方式去获取报文