HTTPX PoolTimeout nuk është skadim i lidhjes me proxy-n
Dalloni pritjen në grupin e lidhjeve HTTPX dhe lironi përgjigjet streaming para zëvendësimit të një proxy që mbase nuk mori kërkesë tjetër.
PoolTimeout do të thotë se HTTPX nuk mori lidhje nga grupi brenda kohës së konfiguruar të pritjes. Nuk provon skadimin e një lidhjeje të re TCP me proxy-n. Kërkesa e dytë mund të jetë ende duke pritur brenda procesit tuaj.
Kjo përsëritet lehtë kur klienti lejon një lidhje dhe përgjigjja e parë streaming lihet e hapur. Nisja e një kërkese tjetër nuk e liron atë lidhje vetvetiu.
Bëjeni të qartë përgjegjësinë për përgjigjen streaming
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)
Zëvendësoni adresën e proxy-t të dokumentacionit para ekzekutimit. Kërkesa tjetër fillon pas daljes nga konteksti i stream-it. Kjo dalje e mbyll përgjigjen edhe nëse kodi ndërpret ciklin ose ngre përjashtim.
Në streaming manual, si client.send(request, stream=True), kodi juaj është përgjegjës për mbylljen përfundimtare. Për AsyncClient, pastrimi manual përkatës pritet me response.aclose(). Mbyllja e një përgjigjeje të palexuar liron kapacitet, por mund të kërkojë hedhjen poshtë të lidhjes bazë në vend të ripërdorimit.
Lexoni emrin e përjashtimit
ConnectTimeout lidhet me vendosjen e lidhjes. ReadTimeout lidhet me pritjen e të dhënave të përgjigjes. PoolTimeout lidhet me marrjen e një vendi lidhjeje. Regjistrimi vetëm i «proxy timeout» humb dallimin e nevojshëm për zgjedhjen e rregullimit.
Kontrolloni përgjigje të hapura, detyra të njëkohshme dhe kufijtë e lidhjeve para ndryshimit të IP-ve të pikave fundore. Një grup më i madh mund të përshtatet me ngarkesë të ligjshme të njëkohshme, por nuk rregullon përgjigje që nuk mbyllen kurrë. Vetëm i jep aplikacionit më shumë kapacitet për të zënë.
Mbajeni klientin të ripërdorshëm gjatë gjithë ngarkesës. Rikrijimi i tij që çdo kërkesë të duket se punon mund të fshehë një problem të ciklit të jetës dhe të humbë ripërdorimin e lidhjeve.