HTTPX PoolTimeout er ekki tímamörk á tengingu við proxy
Greindu bið í tengisafni HTTPX og losaðu streymissvör áður en þú skiptir um proxy sem kannski fékk aldrei næstu beiðni.
PoolTimeout merkir að HTTPX gat ekki fengið tengingu úr safninu innan stillts biðtíma. Það sannar ekki að ný TCP-tenging við proxy hafi runnið á tíma. Önnur beiðnin gæti enn beðið inni í ferlinu þínu.
Þetta er auðvelt að endurtaka þegar biðlari leyfir eina tengingu og fyrsta streymissvarið er látið standa opið. Að hefja aðra beiðni losar ekki þá tengingu af sjálfu sér.
Gerðu ábyrgð á streymissvörum skýra
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)
Skiptu skjölunarvistfangi proxy út fyrir keyrslu. Næsta beiðni hefst eftir að streymissamhenginu er lokið. Það lokar svarinu þótt kóðinn fari út úr lykkjunni eða kasti undantekningu.
Við handvirkt streymi, svo sem client.send(request, stream=True), ber kóðinn þinn ábyrgð á endanlegri lokun. Fyrir AsyncClient er samsvarandi handvirkri tiltekt beðið með response.aclose(). Að loka ólesnu svari losar rými en getur krafist þess að undirliggjandi tengingu sé hent í stað þess að endurnýta hana.
Lestu nafn undantekningarinnar
ConnectTimeout snýst um að koma á tengingu. ReadTimeout snýst um bið eftir svarsgögnum. PoolTimeout snýst um að fá tengisæti. Að skrá aðeins «proxy-tímamörk» glatar aðgreiningunni sem þarf til að velja lagfæringu.
Athugaðu opin svör, samhliða verk og tengimörk áður en þú skiptir um IP-vistföng endapunkta. Stærra safn getur hentað eðlilegu samhliða álagi en lagar ekki svör sem aldrei er lokað. Það gefur forritinu aðeins meira rými til að taka upp.
Haltu biðlaranum endurnýtanlegum yfir verkefnaálagið. Að endursmíða biðlara svo hver beiðni virðist virka getur falið lífsferilsvanda og glatað endurnýtingu tenginga.