urllib3 连接池绑定在哪里



如果一个新的请求会话以不同的方法实例化,例如...

myutil.py

import requests
def method1():
    s1 = requests.Session()
def method2():
    s1 = requests.Session()

requests.packages.urllib3.poolmanager.PoolManager绑定在哪里?它是全局绑定以便连接池在 s1 和 s2 之间共享,还是绑定到每个方法的堆栈,以便 s1 和 s2 具有不同的连接池?

如果它绑定到每个方法的堆栈,我有什么选项可以共享连接池? 例如,我是否应该创建一个传输适配器,然后在方法之间共享:

myutil.py

import requests
from requests.adapters import HTTPAdapter
httpAdapter = HTTPAdapter(pool_connections=10, pool_maxsize=100)
def method1():
    s1 = requests.Session()
    s1.mount('https://', httpAdapter)
def method2():
    s1 = requests.Session()
    s2.mount('https://', httpAdapter)

我做了一些测试,似乎池没有全局绑定。

有关更多信息,请参阅此处。

最新更新