De ce Requests deschide mai multe conexiuni decât pool_maxsize
Folosiți pool_block pentru un pool limitat și adăugați un buget la nivel de aplicație atunci când limita trebuie să acopere tot traficul printr-un proxy.
Cu valoarea implicită pool_block=False, pool_maxsize limitează conexiunile păstrate într-un pool, nu fiecare conexiune simultană. Requests poate crea unele suplimentare și apoi le poate arunca.
Pentru un pool limitat folosit de cererile HTTPS ale unei sesiuni existente:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)Montarea selectează URL-urile destinație HTTPS. Cererile HTTP folosesc adaptorul montat sub http://.
| Intrare | Ce controlează |
|---|---|
| pool_connections | Câte pool-uri păstrează managerul în cache |
| pool_maxsize | Conexiuni în interiorul unui pool |
| pool_block=True | Așteptarea unei conexiuni din pool în loc de a crea una suplimentară |
Requests păstrează în cache și managerii de proxy după URL-ul proxy-ului. Aceste valori nu formează un plafon total unic pentru o listă rotativă de proxy-uri și destinații. Folosiți un buget de concurență la nivel de aplicație dacă cerința este ca toată munca să treacă printr-un singur intermediar.
Blocarea face esențială eliberarea răspunsurilor: consumați corpurile sau închideți răspunsurile în streaming pentru ca munca în așteptare să poată continua. Adaptorul Requests nu oferă un timeout separat pentru această așteptare a pool-ului în configurația prezentată.