有没有办法逐步打开多个新的持久连接到主机?我知道您可以使用下面的代码更改持久连接的数量,但是如何建立连接?
s = requests.Session()
adapter = requests.adapters.HTTPAdapter(pool_connections=5, pool_maxsize=28)
s.mount('https//', adapter)
我尝试使用以下速率限制从API获取数据:
我使用 multiprocessing.pools.threadpools 进行多线程处理,而不是由于某些Windows约束而使用 multiprocessing.pools 进行多处理。
这是函数:
def My_Func(PARAMS):
...
req = requests.Request('GET', url, headers = headers, params = params)
pre = req.prepare()
resp = s.send(pre, stream = True, verify = False)
这是代码:
s = requests.Session()
pool = ThreadPool(10)
Data = pool.map(My_Func, PARAMS)
pool.close()
pool.join()
s.close()
但是,每个生成的线程都会建立一个新的连接(我认为它是因为其他连接尚未被释放回池中)。这意味着对于ThreadPool(10),我是&#39 ;得到一些回应429(超过连接限制)。
答案 0 :(得分:0)
来自doc:
请注意,只有在读取了所有正文数据后,才会将连接释放回池中以便重复使用;一定要将stream设置为False或读取Response对象的content属性。
stream=True
不会释放连接