关于 Python requests模块的 stream参数
-
报文过大使用迭代用
-
demo
import requests base_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
则没有该步骤, 所以加入此参数的意义只有一个就是在加载一些图片或者文件之类的大尺寸报文时不会一次性把报文全部加载到内存中, 转而通过 上述的迭代方式去获取报文