在HTTP协议中,您可以使用keep-alive在一个套接字中发送多个请求,然后立即接收来自服务器的响应,这将大大加快整个过程。有没有办法在python request lib中做到这一点?或者有没有其他方法可以使用requests lib很好地加速这个过程?
发布于 2014-08-11 17:26:16
是的,有。使用requests.Session和it will do keep-alive by default。
我想我应该举个简单的例子:
import logging
import requests
logging.basicConfig(level=logging.DEBUG)
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
s.get('http://httpbin.org/cookies/set/anothercookie/123456789')
r = s.get("http://httpbin.org/cookies")
print(r.text)您将注意到出现这些日志消息
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): httpbin.org
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies/set/sessioncookie/123456789 HTTP/1.1" 302 223
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 55
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies/set/anothercookie/123456789 HTTP/1.1" 302 223
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 90
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 90如果您稍等片刻,然后重复上一次get调用
INFO:requests.packages.urllib3.connectionpool:Resetting dropped connection: httpbin.org
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 90请注意,它将重置丢弃的连接,即重新建立到服务器的连接以发出新请求。
https://stackoverflow.com/questions/25239650
复制相似问题