Per què Requests obre més connexions que pool_maxsize
Feu servir pool_block per a un pool limitat i afegiu un pressupost d'aplicació quan el límit ha de cobrir tot el trànsit a través d'un proxy.
Amb el valor predeterminat pool_block=False, pool_maxsize limita les connexions retingudes en un pool, no cada connexió simultània. Requests pot crear-ne d'addicionals i descartar-les després.
Per a un pool limitat utilitzat per les peticions HTTPS d'una sessió existent:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)El muntatge selecciona les URL de destinació HTTPS. Les peticions HTTP utilitzen l'adaptador muntat sota http://.
| Entrada | Què controla |
|---|---|
| pool_connections | Quants pools emmagatzema el gestor |
| pool_maxsize | Connexions dins d'un pool |
| pool_block=True | Esperar una connexió del pool en lloc de crear-ne una d'addicional |
Requests també emmagatzema gestors de proxy per URL de proxy. Aquests valors no formen un únic límit total per a una llista rotativa de proxys i destinacions. Feu servir un pressupost de concurrència a nivell d'aplicació si el requisit és que tota la feina passi per un únic intermediari.
El bloqueig fa imprescindible alliberar les respostes: consumiu els cossos o tanqueu les respostes en streaming perquè la feina en espera pugui continuar. L'adaptador de Requests no ofereix un temps d'espera separat per a aquesta espera del pool en la configuració mostrada.