PoolTimeout tähendab, et HTTPX ei saanud ühendust kogumist seadistatud ooteaja jooksul. See ei tõesta uue TCP-ühenduse ajalõppu proksini. Teine päring võib ikka veel protsessi sees oodata.

Seda on lihtne korrata, kui klient lubab ühe ühenduse ja esimene voogvastus jäetakse avatuks. Uue päringu alustamine ei vabasta ühendust iseenesest.

Tee voogvastuse eest vastutaja nähtavaks

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)

Asenda dokumentatsiooni proksiaadress enne käivitamist. Järgmine päring algab pärast voogkontekstist väljumist. Väljumine sulgeb vastuse ka siis, kui kood katkestab tsükli või tõstab erindi.

Käsitsi voogedastuse korral, näiteks client.send(request, stream=True), vastutab lõpliku sulgemise eest sinu kood. AsyncClienti puhul oodatakse vastavat käsitsi puhastust kutsega response.aclose(). Lugemata vastuse sulgemine vabastab mahtu, kuid võib nõuda alusühenduse hülgamist taaskasutamise asemel.

Loe erindi nime

ConnectTimeout puudutab ühenduse loomist. ReadTimeout puudutab vastuseandmete ootamist. PoolTimeout puudutab ühenduskoha saamist. Ainult «proksi ajalõpu» logimine kaotab paranduse valimiseks vajaliku eristuse.

Kontrolli avatud vastuseid, rööptöid ja ühendusepiire enne lõpp-punkti IP-de vahetamist. Suurem kogum võib sobida põhjendatud rööpkoormusele, kuid ei paranda kunagi sulgemata vastuseid. See annab rakendusele lihtsalt rohkem hõivatavat mahtu.

Säilita klient kogu töökoormuse vältel taaskasutatavana. Kliendi uuesti loomine, et iga päring näiks töötavat, võib peita elutsükliprobleemi ja kaotada ühenduste taaskasutuse.

Seotud artiklid