2

我在 python 3 中使用 requests 库,尽管我尽了最大努力,但我无法让以下警告消失:

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

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

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

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)

根据这里的建议,考虑到我正在使用的线程数,我不需要将池连接增加那么多,但尽管如此,即使提高 100,我也会收到此警告。

这让我认为连接根本没有被重用,或者如果它们是,由于某种原因创建了太多。我已经更新了请求,所以它是最新版本。

有谁知道我如何摆脱这个?我正在调试一些代码,我认为这是某些请求未正确发出的原因。

有关的:

我可以更改 Python 的“请求”模块的连接池大小吗?

4

1 回答 1

5

由于zendesk通过https进行通信,所以只需要将适配器挂载到https协议即可,即

self.session.mount('https://', adapter)
于 2015-03-18T22:02:45.240 回答