Python 'requests'模块中连接池大小设置过大的缺点是什么?

4
在将一个HTTPAdapter安装到一个requests.Session()中时,我遇到了这样一个问题:由于我在批处理中发出了异步调用(针对同一主机,即属于同一连接池),每个批次的大小都大于最大池大小,因此连接最终被丢弃。解决方案是增加最大连接池大小。
我想知道的是,在发出较少迭代但更大批次大小(具有更大的最大连接池大小)与发出更多迭代但较小批次大小(具有较小的连接池大小)之间的权衡是什么。将池大小扩展到无限大并在一个批次请求中发出所有异步调用(属于同一池)有什么问题吗?

你能展示一下使用requests发起异步调用的代码吗? - georgexsh
1个回答

1
requests.adapters HTTPAdapter中,连接池的设置可能直接传递给urllib3's PoolManager。调整ConnectionPool的大小以允许更多的连接没有问题。但是,有一个缺点需要考虑...主机响应您的请求的能力。根据我的经验,这将是真正的瓶颈。实际上,参考上面的urllib3链接:

但是,如果指定block=True,则特定主机最多可以打开maxsize个连接。任何新请求都将阻塞,直到从池中获得可用连接。这是防止在多线程应用程序中向主机洪水般地发送过多连接的好方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接