Python 请求使用 keep-alive 加速

标签 python http python-requests python-sockets

在 HTTP 协议(protocol)中,您可以使用 keep-alive 在一个套接字中发送多个请求,然后立即接收来自服务器的响应,这样可以显着加快整个过程。有没有办法在 python 请求库中做到这一点?或者有没有其他方法可以使用 requests 库来加快速度?

最佳答案

是的,有。使用 requests.Sessionit 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

请注意,它会重置断开的连接,即重新建立与服务器的连接以发出新请求。

关于Python 请求使用 keep-alive 加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25239650/

相关文章:

c++ - 痛饮 : Unable to access constructor with double pointer

python - 标量/数组乘法返回任意类型

node.js - Node HTTP 服务器的最大性能?

javascript - 客户端 JavaScript 应用程序和服务器端 HTTP API 之间的身份验证?

python - 从 ClinicalTrials.gov 抓取数据

python - 改变字符串的最后一个字节

python - Django Rest Framework - JSON Post 请求 ManyTomany 字段问题

c# - 不允许 httpclient 后异步返回方法 (405)

python-3.x - Python 3 - 将自定义 header 添加到 urllib.request 请求

python - 我如何发送带有 python 和动态值的发布请求?