Python请求,警告:urllib3.connectionpool:连接池已满

时间:2015-03-18 20:18:15

标签: python multithreading python-requests urllib3

我在python 3中使用了请求库,尽管我付出了最大的努力,但我无法获得以下警告消失:

  

警告:requests.packages.urllib3.connectionpool:连接池已满,丢弃连接:myorganization.zendesk.com

我在多线程环境中使用请求同时获取和发布json文件到单个主机,绝对没有子域。在目前的设置中,我只使用了20个线程。

我尝试使用Session来获取重用连接的请求,从而解决问题,但它没有奏效。这是我的类构造函数中的代码:

self.session = requests.Session()
adapter = requests.adapters.HTTPAdapter(
    pool_connections=100, pool_maxsize=100)
self.session.mount('http://', adapter)
self.session.headers.update({'Connection':'Keep-Alive'})
self.session.auth = (self._user+"/token", self._token)

根据 here 的建议,考虑到我使用的线程数量,我不应该通过那么多来增加池化连接,但尽管如此,我甚至在提高时也会收到此警告100。

这让我觉得连接根本没有被重用,或者如果它们是,那么由于某种原因创建的连接太多了。我已更新了请求,因此它是最新版本。

有没有人有任何想法我怎么能摆脱这个?我正在调试一些代码,我认为这是一些请求没有正确完成的责任。

相关:

Can I change the connection pool size for Python's "requests" module?

1 个答案:

答案 0 :(得分:3)

由于zendesk通过https进行通信,您只需要将适配器安装到https协议,即

self.session.mount('https://', adapter)