PoolTimeout HTTPX коюлган күтүү убактысында пулдан байланыш ала албаганын билдирет. Бул проксиге жаңы TCP байланышынын тайм-аутун далилдебейт. Экинчи суроо дагы эле процессиңиздин ичинде күтүшү мүмкүн.

Кардар бир байланышка уруксат берип, биринчи агымдык жооп ачык калса, муну кайталоо оңой. Башка суроону баштоо ал байланышты өзүнөн-өзү бошотпойт.

Агымдык жооп үчүн жоопкерчиликти ачык кылыңыз

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)

Иштетүүдөн мурда документтик прокси дарегин алмаштырыңыз. Кийинки суроо агым контекстинен чыккандан кийин башталат. Код циклден чыкса же өзгөчө абал чыгарса да, контексттен чыгуу жоопту жабат.

client.send(request, stream=True) сыяктуу кол менен агымдык режимде акыркы жабууга кодуңуз жооп берет. AsyncClient үчүн тиешелүү кол менен тазалоо response.aclose() менен күтүлөт. Окулбаган жоопту жабуу орун бошотот, бирок астындагы байланышты кайра колдонбой таштоону талап кылышы мүмкүн.

Өзгөчө абалдын атын окуңуз

ConnectTimeout байланыш түзүүгө тиешелүү. ReadTimeout жооп маалыматтарын күтүүгө тиешелүү. PoolTimeout байланыш ордун алууга тиешелүү. Жалаң «прокси тайм-ауту» деп жазуу оңдоону тандоого керек айырманы жоготот.

Туташуу чекиттеринин IPлерин алмаштыруудан мурда ачык жоопторду, бир убактагы иштерди жана байланыш чектерин текшериңиз. Чоң пул негиздүү бир убактагы жүккө туура келиши мүмкүн, бирок эч жабылбаган жоопторду оңдобойт. Болгону колдонмого ээлей турган көбүрөөк орун берет.

Кардарды бүт иш жүгүндө кайра колдонуу үчүн сактаңыз. Ар бир суроо иштеп жаткандай көрүнүш үчүн кардарды кайра түзүү жашоо циклинин көйгөйүн жашырып, байланыштарды кайра колдонуу мүмкүнчүлүгүн жоготушу мүмкүн.

Тектеш макалалар