Mit dem Standard pool_block=False begrenzt pool_maxsize die im Pool gehaltenen Verbindungen, nicht jede gleichzeitige Verbindung. Requests kann zusätzliche erstellen und sie danach verwerfen.

Für einen begrenzten Pool, den die HTTPS-Anfragen einer bestehenden Sitzung nutzen:

from requests.adapters import HTTPAdapter

adapter = HTTPAdapter(
    pool_connections=10,
    pool_maxsize=4,
    pool_block=True,
)
session.mount("https://", adapter)

Das Mounten wählt HTTPS-Ziel-URLs aus. HTTP-Anfragen verwenden den unter http:// eingebundenen Adapter.

EingabeWas es steuert
pool_connectionsWie viele Pools der Manager zwischenspeichert
pool_maxsizeVerbindungen innerhalb eines Pools
pool_block=TrueAuf eine Pool-Verbindung warten, statt eine zusätzliche zu erstellen

Requests speichert außerdem Proxy-Manager nach Proxy-URL zwischen. Diese Werte bilden keine einzige Gesamtobergrenze über eine rotierende Liste von Proxys und Zielen. Verwenden Sie ein Parallelitätsbudget auf Anwendungsebene, wenn die Anforderung lautet, dass alle Arbeit über einen Vermittler läuft.

Blockieren macht das Freigeben von Antworten unerlässlich: Antwortkörper lesen oder Streaming-Antworten schließen, damit wartende Arbeit fortfahren kann. Der Adapter von Requests bietet in der gezeigten Anordnung keinen eigenen Timeout für dieses Warten auf den Pool.

Ähnliche Artikel