Kodėl Requests atidaro daugiau jungčių nei pool_maxsize
Naudokite pool_block ribotam telkiniui, o kai riba turi apimti visą srautą per proxy, pridėkite programos lygio biudžetą.
Su numatytuoju pool_block=False pool_maxsize riboja telkinyje laikomas jungtis, o ne kiekvieną vienalaikę jungtį. Requests gali sukurti papildomų ir vėliau jas išmesti.
Ribotam telkiniui, kurį naudoja esamos sesijos HTTPS užklausos:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)Prijungimas parenka HTTPS paskirties URL. HTTP užklausos naudoja adapterį, prijungtą prie http://.
| Įvestis | Ką ji valdo |
|---|---|
| pool_connections | Kiek telkinių tvarkyklė talpina podelyje |
| pool_maxsize | Jungtys viename telkinyje |
| pool_block=True | Laukti telkinio jungties, o ne kurti papildomą |
Requests taip pat podelyje talpina proxy tvarkykles pagal proxy URL. Šios reikšmės nesudaro vienos bendros ribos kintamam proxy ir paskirčių sąrašui. Naudokite programos lygio lygiagretumo biudžetą, jei reikalavimas yra, kad visas darbas eitų per vieną tarpininką.
Blokavimas daro atsakymų atlaisvinimą būtiną: suvartokite turinį arba uždarykite srautinius atsakymus, kad laukiantis darbas galėtų tęstis. Parodytoje konfigūracijoje Requests adapteris nenumato atskiro šio telkinio laukimo skirtojo laiko.