HTTPX PoolTimeout mhuwiex timeout tal-konnessjoni mal-proxy
Identifika l-istennija fil-pool ta’ HTTPX u libera risposti streaming qabel tibdel proxy li forsi lanqas irċieva talba oħra.
PoolTimeout ifisser li HTTPX ma setax jikseb konnessjoni mill-pool fi żmien l-istennija kkonfigurat. Mhuwiex prova li konnessjoni TCP ġdida mal-proxy qabżet il-ħin. It-tieni talba tista’ għadha tistenna ġewwa l-proċess tiegħek.
Dan faċli tirriproduċih meta klijent jippermetti konnessjoni waħda u l-ewwel risposta streaming titħalla miftuħa. Talba oħra ma tilliberax dik il-konnessjoni waħedha.
Agħmel ir-responsabbiltà għar-risposta streaming ċara
import httpx
limits = httpx.Limits(
max_connections=1,
max_keepalive_connections=1,
)
timeout = httpx.Timeout(
connect=5, read=10, write=10, pool=1
)
with httpx.Client(
proxy="http://203.0.113.10:8080",
trust_env=False,
limits=limits,
timeout=timeout,
) as client:
with client.stream("GET", "https://example.com/") as response:
print(response.status_code)
for chunk in response.iter_bytes():
print(len(chunk))
next_response = client.get("https://example.com/")
print(next_response.status_code)
Ibdel l-indirizz tal-proxy tad-dokumentazzjoni qabel tħaddmu. It-talba li jmiss tibda wara l-ħruġ mill-kuntest tal-stream. Dak il-ħruġ jagħlaq ir-risposta anki jekk il-kodiċi joħroġ mil-loop jew iqajjem eċċezzjoni.
Bi streaming manwali, bħal client.send(request, stream=True), il-kodiċi tiegħek hu responsabbli għall-għeluq finali. Għal AsyncClient, it-tindif manwali korrispondenti jiġi mistenni b’response.aclose(). L-għeluq ta’ risposta mhux moqrija jillibera kapaċità iżda jista’ jirrikjedi li tintrema l-konnessjoni ta’ taħt minflok terġa’ tintuża.
Aqra l-isem tal-eċċezzjoni
ConnectTimeout jikkonċerna l-istabbiliment tal-konnessjoni. ReadTimeout jikkonċerna l-istennija għal data tar-risposta. PoolTimeout jikkonċerna l-kisba ta’ post għal konnessjoni. Li tirreġistra biss «proxy timeout» jitlef id-distinzjoni meħtieġa biex tagħżel tiswija.
Iċċekkja risposti miftuħa, kompiti konkorrenti u limiti ta’ konnessjoni qabel tibdel IPs tal-endpoints. Pool akbar jista’ jkun xieraq għal xogħol konkorrenti leġittimu, iżda ma jsewwix risposti li qatt ma jingħalqu. Jagħti biss aktar kapaċità lill-applikazzjoni biex tokkupaha.
Żomm il-klijent għall-użu mill-ġdid tul ix-xogħol. Li tibnih mill-ġdid biex kull talba tidher taħdem jista’ jaħbi problema taċ-ċiklu tal-ħajja u jitlef l-użu mill-ġdid tal-konnessjonijiet.