Запросы Python, предупреждение: urllib3.connectionpool: пул соединений заполнен

Я использую библиотеку запросов в 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)

Согласно совету из здесь мне не нужно увеличивать количество соединений в пуле учитывая количество потоков, которые я использую, но, несмотря на это, я получаю это предупреждение даже при повышении на 100.

Это заставляет меня думать, что соединения вообще не используются повторно, а если и используются, то по какой-то причине создается слишком много. Я обновил запросы, так что это самая последняя версия.

У кого-нибудь есть идеи, как я могу избавиться от этого? Я отлаживаю некоторый код, и я думаю, что это вина за то, что некоторые запросы выполняются неправильно.

Связанный:

Могу ли я изменить размер пула соединений для запросов Python? модуль?


person Sam P    schedule 18.03.2015    source источник
comment
Пробовали ли вы монтировать адаптер как для HTTPS, так и для HTTP?   -  person ig0774    schedule 19.03.2015
comment
Ах, так очевидно, большое спасибо :) Это решило проблему для меня (или, по крайней мере, похоже, что на данный момент), если вы добавите ответ, я приму его.   -  person Sam P    schedule 19.03.2015


Ответы (1)


Поскольку zendesk общается по протоколу https, вам просто нужно подключить адаптер к протоколу https, т.е.

self.session.mount('https://', adapter)
person ig0774    schedule 18.03.2015