HTTPX PoolTimeout is gjin ferbiningstime-out nei de proxy
Werken wachttiid yn de HTTPX-ferbiningspool en jou streamende antwurden frij foardatst in proxy ferfangst dy't faaks gjin folgjend fersyk krige.
PoolTimeout betsjut dat HTTPX binnen de ynstelde wachttiid gjin ferbining út de pool krije koe. It bewiist gjin time-out fan in nije TCP-ferbining nei de proxy. It twadde fersyk wachtet mooglik noch yn dyn proses.
Dit is maklik nei te meitsjen as in kliïnt ien ferbining tastiet en it earste streamende antwurd iepen bliuwt. In nij fersyk begjinne makket dy ferbining net fansels frij.
Meitsje de ferantwurdlikens foar streamende antwurden dúdlik
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)
Ferfang it dokumintaasjeadres fan de proxy foar it útfieren. It folgjende fersyk begjint nei it ferlitten fan de streamkontekst. Dat slút it antwurd, ek as de koade út de lus springt of in útsûndering smyt.
By hânmjittich streamen, lykas client.send(request, stream=True), is dyn koade ferantwurdlik foar it úteinlike sluten. By AsyncClient wurdt op de oerienkommende hânmjittige oprêding wachte mei response.aclose(). In net lêzen antwurd slute makket kapasiteit frij, mar kin easkje dat de ûnderlizzende ferbining fuortsmiten wurdt ynstee fan opnij brûkt.
Lês de namme fan de útsûndering
ConnectTimeout giet oer it opsetten fan de ferbining. ReadTimeout giet oer wachtsjen op antwurdgegevens. PoolTimeout giet oer it krijen fan in ferbiningsplak. Allinnich «proxytime-out» logge ferliest it ûnderskied dat nedich is om in oplossing te kiezen.
Kontrolearje iepen antwurden, tagelyk rinnende taken en ferbiningslimiten foardatst einpunt-IP's wikselest. In gruttere pool kin passend wêze foar echte tagelyk rinnende wurkdruk, mar reparearret gjin antwurden dy't nea sluten wurde. It jout de applikaasje allinnich mear kapasiteit om te besetten.
Hâld de kliïnt opnij brûkber troch de hiele wurkdruk hinne. De kliïnt opnij oanmeitsje om elk fersyk lykje te litten te wurkjen kin in libbenssyklusprobleem ferbergje en ferbiningswergebrûk ferlieze.