使用默认的 pool_block=False 时,pool_maxsize 限制的是池中保留的连接数,而不是同时打开的全部连接数。Requests 可以创建额外连接,随后再将它们丢弃。

对于由现有会话的 HTTPS 请求使用的有界连接池:

from requests.adapters import HTTPAdapter

adapter = HTTPAdapter(
    pool_connections=10,
    pool_maxsize=4,
    pool_block=True,
)
session.mount("https://", adapter)

mount 选择的是 HTTPS 目标 URL。HTTP 请求使用挂在 http:// 下的适配器。

输入它控制什么
pool_connections管理器缓存多少个连接池
pool_maxsize单个池内的连接数
pool_block=True等待池中连接,而不是新建额外连接

Requests 还会按代理 URL 缓存代理管理器。这些取值并不会在一个不断轮换的代理与目标列表上形成统一的总上限。如果要求是全部工作都经过同一个中间层,请使用应用级的并发预算。

阻塞让响应释放变得关键:读完响应体或关闭流式响应,等待中的工作才能继续。在所示配置中,Requests 的适配器并没有为这次等待连接池提供单独的超时。

相关文章