Miért nyit a Requests több kapcsolatot, mint a pool_maxsize
Használjon pool_blockot a korlátozott készlethez, és adjon hozzá alkalmazásszintű keretet, ha a korlátnak egy proxy összes forgalmát le kell fednie.
Az alapértelmezett pool_block=False mellett a pool_maxsize a készletben megtartott kapcsolatokat korlátozza, nem minden egyidejű kapcsolatot. A Requests továbbiakat hozhat létre, majd később eldobhatja őket.
Egy meglévő munkamenet HTTPS-kérései által használt korlátozott készlethez:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)A csatolás kiválasztja a HTTPS-cél-URL-eket. A HTTP-kérések a http:// alá csatolt adaptert használják.
| Bemenet | Mit szabályoz |
|---|---|
| pool_connections | Hány készletet tárol a kezelő gyorsítótárban |
| pool_maxsize | Kapcsolatok egy készleten belül |
| pool_block=True | Megvárni egy készletkapcsolatot ahelyett, hogy továbbit hozna létre |
A Requests a proxykezelőket proxy-URL szerint is gyorsítótárazza. Ezek az értékek nem alkotnak egyetlen teljes korlátot a proxik és célok forgó listáján. Alkalmazzon alkalmazásszintű párhuzamossági keretet, ha az a követelmény, hogy minden munka egyetlen közvetítőn keresztül menjen.
A blokkolás elengedhetetlenné teszi a válaszok felszabadítását: fogyassza el a törzseket, vagy zárja be a streamelt válaszokat, hogy a várakozó munka folytatódhasson. A Requests adaptere a bemutatott elrendezésben nem biztosít külön időtúllépést ehhez a készletre várakozáshoz.