Perché Requests apre più connessioni di pool_maxsize
Usate pool_block per un pool limitato e aggiungete un budget applicativo quando il limite deve coprire tutto il traffico attraverso un proxy.
Con il valore predefinito pool_block=False, pool_maxsize limita le connessioni conservate in un pool, non ogni connessione simultanea. Requests può crearne di aggiuntive e poi scartarle.
Per un pool limitato usato dalle richieste HTTPS di una sessione esistente:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)Il mount seleziona gli URL di destinazione HTTPS. Le richieste HTTP usano l'adattatore montato sotto http://.
| Input | Cosa controlla |
|---|---|
| pool_connections | Quanti pool memorizza il gestore |
| pool_maxsize | Connessioni all'interno di un pool |
| pool_block=True | Attendere una connessione del pool invece di crearne una aggiuntiva |
Requests memorizza anche i gestori di proxy per URL di proxy. Questi valori non formano un unico tetto totale su un elenco rotante di proxy e destinazioni. Usate un budget di concorrenza a livello applicativo se il requisito è che tutto il lavoro passi attraverso un solo intermediario.
Il blocco rende essenziale liberare le risposte: consumate i corpi o chiudete le risposte in streaming così che il lavoro in attesa possa procedere. L'adattatore di Requests non fornisce un timeout separato per questa attesa del pool nella configurazione mostrata.