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://.

InputCosa controlla
pool_connectionsQuanti pool memorizza il gestore
pool_maxsizeConnessioni all'interno di un pool
pool_block=TrueAttendere 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.

Articoli correlati