request.adapters.HTTPAdapter中的pool_connections是什么意思?
初始化请求时Session
,HTTPAdapter
将创建两个并将其安装到http
和https
。
这是如何HTTPAdapter
定义的:
class requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10,
max_retries=0, pool_block=False)
虽然我理解了pool_maxsize
(池可以保存的会话数)的含义,但我不pool_connections
知道它的含义或作用。Doc说:
Parameters:
pool_connections – The number of urllib3 connection pools to cache.
但是“缓存”是什么意思?使用多个连接池有什么意义呢?
-
请求使用urllib3来管理其连接和其他功能。
重用连接是保持HTTP请求重复执行的重要因素。urllib3自述文件说明:
为什么要重用连接?
性能。通常,当您进行urllib调用时,将为每个请求创建一个单独的套接字连接。通过重用现有的套接字(自HTTP
1.1开始受支持),请求将在服务器端占用更少的资源,并在客户端提供更快的响应时间。[…]为了回答您的问题,“ pool_maxsize”是每个主机保留的连接数(这对于多线程应用程序很有用),而“
pool_connections”是保留的主机池数。例如,如果您要连接到100个不同的主机,并且pool_connections=10
,那么将仅重用最近的10个主机的连接。