Защо Requests отваря повече връзки от pool_maxsize
Използвайте pool_block за ограничен пул и добавете бюджет на приложението, когато лимитът трябва да покрива целия трафик през прокси.
С подразбиращото се 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 не предоставя отделен таймаут за това изчакване на пула в показаната схема.