Por qué Requests abre más conexiones que pool_maxsize
Use pool_block para un grupo limitado y añada un presupuesto de aplicación cuando el límite deba cubrir todo el tráfico a través de un proxy.
Con el valor predeterminado pool_block=False, pool_maxsize limita las conexiones retenidas en un grupo, no todas las conexiones simultáneas. Requests puede crear conexiones adicionales y descartarlas después.
Para un grupo limitado que usan las solicitudes HTTPS de una sesión existente:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)El montaje selecciona las URL de destino HTTPS. Las solicitudes HTTP usan el adaptador montado en http://.
| Entrada | Qué controla |
|---|---|
| pool_connections | Cuántos grupos almacena en caché el gestor |
| pool_maxsize | Conexiones dentro de un grupo |
| pool_block=True | Esperar una conexión del grupo en lugar de crear una adicional |
Requests también almacena en caché los gestores de proxy por URL de proxy. Estos valores no forman un único límite total para una lista rotativa de proxies y destinos. Use un presupuesto de concurrencia a nivel de aplicación si el requisito es que todo el trabajo pase por un único intermediario.
El bloqueo hace imprescindible liberar las respuestas: consuma los cuerpos o cierre las respuestas en streaming para que el trabajo en espera pueda avanzar. El adaptador de Requests no ofrece un tiempo de espera separado para esta espera del grupo en la disposición mostrada.