PoolTimeout merkir, at HTTPX ikki fekk eina sambinding úr pottinum innan ta ásettu bíðitíðina. Tað prógvar ikki, at ein nýggj TCP-sambinding við proxyin fór um tíðarmarkið. Annar fyrispurningurin kann enn bíða inni í tilgongdini.

Hetta er lætt at endurskapa, tá ið klienturin loyvir einari sambinding og fyrsta streymissvarið stendur opið. At byrja ein annan fyrispurning leysgevur ikki sambindingina av sær sjálvum.

Ger ábyrgdina fyri streymissvar týðiliga

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)

Skift skjalfestingaradressuna hjá proxyinum út, áðrenn tú koyrir. Næsti fyrispurningurin byrjar, eftir at streymissamanhangurin er farin úr gildi. Tá verður svarið latið aftur, hóast kotan fer úr lykkjuni ella kastar eitt undantak.

Við handligari streyming, sum client.send(request, stream=True), hevur tín kota ábyrgdina fyri endaligu afturlatingini. Fyri AsyncClient verður samsvarandi handliga uppruddingin bíðað við response.aclose(). At lata eitt ólisið svar aftur leysgevur rúmd, men kann krevja, at undirliggjandi sambindingin verður slept heldur enn endurnýtt.

Les navnið á undantakinum

ConnectTimeout snýr seg um at stovna samband. ReadTimeout snýr seg um at bíða eftir svardátum. PoolTimeout snýr seg um at fáa eitt sambindingarpláss. At logga bara «proxy-tíðarmark» missir munin, sum er neyðugur fyri at velja eina loysn.

Kanna opin svar, samstundis uppgávur og sambindingarmørk, áðrenn tú skiftir IP-adressur á endapunktum. Ein størri pottur kann hóska til veruligt samstundis arbeiði, men rættar ikki svar, sum ongantíð verða latin aftur. Hann gevur bara forritinum meiri rúmd at taka upp.

Halt klientin endurnýtanligan gjøgnum arbeiðið. At gera klientin av nýggjum, so hvør fyrispurningur tykist virka, kann fjala ein lívsgongdartrupulleika og missa endurnýtslu av sambindingum.

Skyldar greinar