При значении по умолчанию pool_block=False pool_maxsize ограничивает соединения, удерживаемые в пуле, а не каждое одновременное соединение. Requests может создавать дополнительные соединения и затем отбрасывать их.

Для ограниченного пула, который используют HTTPS-запросы существующей сессии:

from requests.adapters import HTTPAdapter

adapter = HTTPAdapter(
    pool_connections=10,
    pool_maxsize=4,
    pool_block=True,
)
session.mount("https://", adapter)

Монтирование выбирает URL-адреса назначения HTTPS. HTTP-запросы используют адаптер, смонтированный под http://.

ВходЧто это контролирует
pool_connectionsСколько пулов кэширует менеджер
pool_maxsizeСоединения внутри одного пула
pool_block=TrueОжидание соединения из пула вместо создания дополнительного

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

Блокировка делает освобождение ответов обязательным: вычитывайте тела или закрывайте потоковые ответы, чтобы ожидающая работа могла продолжаться. Адаптер Requests в показанной конфигурации не предоставляет отдельного тайм-аута для этого ожидания пула.

Похожие статьи