Hvorfor Requests åbner flere forbindelser end pool_maxsize
Brug pool_block til en afgrænset pulje, og tilføj et budget på applikationsniveau, når grænsen skal dække al trafik gennem en proxy.
Med standarden pool_block=False begrænser pool_maxsize de forbindelser, der beholdes i en pulje, ikke hver samtidig forbindelse. Requests kan oprette ekstra og smide dem væk bagefter.
Til en afgrænset pulje brugt af en eksisterende sessions HTTPS-anmodninger:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)Mountet vælger HTTPS-destinations-URL'er. HTTP-anmodninger bruger den adapter, der er monteret under http://.
| Input | Hvad det styrer |
|---|---|
| pool_connections | Hvor mange puljer manageren cacher |
| pool_maxsize | Forbindelser inden for en pulje |
| pool_block=True | Vent på en puljeforbindelse i stedet for at oprette en ekstra |
Requests cacher også proxy-managere pr. proxy-URL. Disse værdier udgør ikke én samlet grænse på tværs af en roterende liste af proxies og destinationer. Brug et samtidighedsbudget på applikationsniveau, hvis kravet er, at alt arbejde skal gå gennem én mellemmand.
Blokering gør frigivelse af svar afgørende: forbrug kroppe eller luk streaming-svar, så ventende arbejde kan fortsætte. Requests' adapter giver ikke en separat timeout til denne puljeventetid i den viste opsætning.