Я хочу избежать переполнения пула http-соединений


Я создаю инструмент, который будет выполнять множество одновременных вызовов RESTful API. Я использую питон "запросы" и "потоками" модуль. Как только я стек слишком много одновременных получает в системе я получаю исключения, как это:

ConnectionError: HTTPConnectionPool (host='xxx.net', port=80): максимальное число повторных попыток превышено с url: / thing / subthing/ (вызвано : [Errno 10055] операция над сокетом не может быть выполнена, так как системе не хватает достаточного буферного пространства или из-за переполнения очереди)

Что я могу сделать, чтобы либо увеличить буфер и пространство очереди, либо попросить модуль запросов подождать свободного слота?

(я знаю, что мог бы вставить его в цикл" try", но это кажется неуклюжим)

1 2

1 ответ:

Используйте сеанс . Если вы используете семейство методов requests.request (get, post, ...), каждый запрос будет использовать свою собственную сессию с собственным пулом соединений, поэтому он не будет использовать пул соединений.

Если вам нужно точно настроить количество соединений, используемых в сеансе, вы можете сделать это, изменив его HTTPAdapter