使Python'requests'模块的连接池大小非常大的缺点是什么?

时间:2017-12-06 02:37:31

标签: python multithreading request python-requests python-multithreading

在将HTTPAdapter挂载到requests.Session()上时,我遇到了一个问题,最终导致连接被丢弃,因为我正在批量发出异步调用(对于同一主机,即属于同一个连接池)每个批次大小高于最大池大小的位置。当然,解决方案是增加最大池大小。

我想知道的是,在较大批量大小(具有较大的最大池大小)的较少迭代与较小批量大小(较小的池大小)的较大迭代之间进行权衡是什么。将池大小缩放到无穷大并在一个批处理请求中发出所有异步调用(属于同一个池)有什么问题?

1 个答案:

答案 0 :(得分:1)

requests.adapters HTTPAdapter中,连接池的设置可能会直接传递到urllib3's PoolManager

调整ConnectionPool的大小以允许更多连接没有问题。但是,您应该考虑一个缺点......主机响应您的请求的能力。根据我的经验,这将是真正的瓶颈。实际上,参考上面的urllib3链接:

  

但是,如果指定block = True,则最多可以有maxsize   连接对特定主机开放。任何新请求都将被阻止   直到池中有连接。这是一个很好的方法   防止多线程中连接过多的主机泛滥   应用