Varför Requests öppnar fler anslutningar än pool_maxsize
Använd pool_block för en begränsad pool och lägg till en budget på applikationsnivå när gränsen måste täcka all trafik genom en proxy.
Med standardvärdet pool_block=False begränsar pool_maxsize de anslutningar som behålls i en pool, inte varje samtidig anslutning. Requests kan skapa extra och sedan kasta bort dem.
För en begränsad pool som en befintlig sessions HTTPS-förfrågningar använder:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)Monteringen väljer HTTPS-mål-URL:er. HTTP-förfrågningar använder adaptern som är monterad under http://.
| Indata | Vad det styr |
|---|---|
| pool_connections | Hur många pooler hanteraren cachar |
| pool_maxsize | Anslutningar inom en pool |
| pool_block=True | Vänta på en poolanslutning i stället för att skapa en extra |
Requests cachar också proxyhanterare per proxy-URL. Dessa värden utgör inte en enda total gräns över en roterande lista av proxyservrar och mål. Använd en samtidighetsbudget på applikationsnivå om kravet är att allt arbete går genom en enda förmedlare.
Blockering gör frigöring av svar avgörande: förbruka kropparna eller stäng strömmande svar så att väntande arbete kan fortsätta. Requests adapter ger ingen separat tidsgräns för denna poolväntan i den visade konfigurationen.