我对python-requests模块有疑问。根据文件
感谢urllib3,keep-alive在会话中是100%自动的!您在会话中发出的任何请求都将自动重用相应的连接!
我的示例代码如下所示:
def make_double_get_request():
response = requests.get(url=API_URL, headers=headers, timeout=10)
print response.text
response = requests.get(url=API_URL, headers=headers, timeout=10)
print response.text
但我收到的日志告诉我,每次请求都会启动新的HTTP连接:
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): url
DEBUG:requests.packages.urllib3.connectionpool:"GET url HTTP/1.1" 200 None
response text goes here
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): url
DEBUG:requests.packages.urllib3.connectionpool:"GET url HTTP/1.1" 200 None
response text goes here
我做错了吗?通过使用wireshark查看数据包,似乎它们实际上具有保持活动集。
答案 0 :(得分:2)
def make_double_get_request():
session = requests.Session()
response = session.get(url=API_URL, headers=headers, timeout=10)
print response.text
response = session.get(url=API_URL, headers=headers, timeout=10)
print response.text
requests
顶级HTTP方法函数是一种便利API,每次都会创建一个新的Session
对象,从而阻止重用连接。
来自文档:
Session对象允许您跨请求保留某些参数。它还会在从Session实例发出的所有请求中保留cookie,并将使用
urllib3
的连接池。