Чаму 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 не прадстаўляе асобнага тайм-аўту для гэтага чакання пула ў паказанай канфігурацыі.