Я хочу избежать переполнения пула http-соединений
Я создаю инструмент, который будет выполнять множество одновременных вызовов RESTful API. Я использую питон "запросы" и "потоками" модуль. Как только я стек слишком много одновременных получает в системе я получаю исключения, как это:
ConnectionError: HTTPConnectionPool (host='xxx.net', port=80): максимальное число повторных попыток превышено с url: / thing / subthing/ (вызвано : [Errno 10055] операция над сокетом не может быть выполнена, так как системе не хватает достаточного буферного пространства или из-за переполнения очереди)
Что я могу сделать, чтобы либо увеличить буфер и пространство очереди, либо попросить модуль запросов подождать свободного слота?
(я знаю, что мог бы вставить его в цикл" try", но это кажется неуклюжим)
1 ответ:
Используйте сеанс . Если вы используете семейство методов
requests.request
(get, post, ...), каждый запрос будет использовать свою собственную сессию с собственным пулом соединений, поэтому он не будет использовать пул соединений.Если вам нужно точно настроить количество соединений, используемых в сеансе, вы можете сделать это, изменив его
HTTPAdapter