【发布时间】:2017-12-09 02:47:50
【问题描述】:
我想知道这段代码是否安全:
import requests
with requests.Session() as s:
response = s.get("http://google.com", stream=True)
content = response.content
例如像这样简单,这不会失败(注意我没有写“它有效”:p),因为池无论如何都不会立即关闭连接(这是会话/池的一个点,对吗?) .
使用stream=True,响应对象应该具有包含连接的raw 属性,但我不确定连接是否由会话拥有,然后如果我不拥有'现在不阅读内容,但稍后可能已关闭。
我目前的 2 美分是不安全的,但我不是 100% 确定。
谢谢!
[阅读请求代码后编辑]
在详细阅读了请求代码后,似乎requests.get 正在做自己的事情:
https://github.com/requests/requests/blob/master/requests/api.py
def request(method, url, **kwargs):
with sessions.Session() as session:
return session.request(method=method, url=url, **kwargs)
因为 kwargs 可能包含 stream。
所以我猜答案是“它很安全”。
【问题讨论】:
-
docs.python-requests.org/en/master/user/advanced 参见“正文内容工作流程”
-
我在提问之前阅读了这个链接,这并没有提到当时 Session 对象和流的行为。
-
哦,我的错!我在他们之间来回看了看,像个傻瓜一样错过了。这是一个很好的问题。祝你好运。
标签: python session python-requests