PoolTimeout inamaanisha HTTPX haikuweza kupata muunganisho kutoka kwenye dimbwi ndani ya muda wa kusubiri uliowekwa. Si ushahidi wa kuisha kwa muda wa muunganisho mpya wa TCP kwa proksi. Ombi la pili huenda bado linasubiri ndani ya mchakato wako.

Hili ni rahisi kurudia mteja anaporuhusu muunganisho mmoja na jibu la kwanza la mtiririko kuachwa wazi. Kuanza ombi jingine hakufanyi muunganisho huo uwe huru wenyewe.

Weka wazi wajibu wa kufunga jibu la mtiririko

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)

Badilisha anwani ya nyaraka ya proksi kabla ya kuendesha. Ombi linalofuata huanza baada ya kutoka kwenye muktadha wa mtiririko. Kutoka humo hufunga jibu hata msimbo ukitoka kwenye kitanzi au kuzalisha hali ya kipekee.

Katika mtiririko wa mikono, kama client.send(request, stream=True), msimbo wako unawajibika kwa kufunga mwishowe. Kwa AsyncClient, usafishaji wa mikono unaolingana husubiriwa kwa response.aclose(). Kufunga jibu lisilosomwa hufungua nafasi lakini kunaweza kuhitaji kutupa muunganisho wa msingi badala ya kuutumia tena.

Soma jina la hali ya kipekee

ConnectTimeout inahusu kuanzisha muunganisho. ReadTimeout inahusu kusubiri data ya jibu. PoolTimeout inahusu kupata nafasi ya muunganisho. Kuandika tu «muda wa proksi umeisha» hupoteza tofauti inayohitajika kuchagua marekebisho.

Kagua majibu yaliyo wazi, kazi zinazoenda pamoja na mipaka ya miunganisho kabla ya kubadili IP za sehemu za muunganisho. Dimbwi kubwa linaweza kufaa mzigo halali wa kazi za pamoja, lakini halirekebishi majibu yasiyofungwa kamwe. Hutoa tu nafasi zaidi ya programu kuijaza.

Hifadhi mteja ili atumike tena katika mzigo wote wa kazi. Kujenga mteja upya ili kila ombi lionekane kufanya kazi kunaweza kuficha tatizo la mzunguko wa maisha na kupoteza matumizi ya tena ya miunganisho.

Makala zinazohusiana