PoolTimeout HTTPX sozlangan kutish vaqti ichida hovuzdan ulanish ololmaganini bildiradi. Bu proksiga yangi TCP ulanish vaqti tugaganini isbotlamaydi. Ikkinchi so‘rov hali jarayoningiz ichida kutayotgan bo‘lishi mumkin.

Mijoz bitta ulanishga ruxsat berib, birinchi oqimli javob ochiq qolsa, buni takrorlash oson. Boshqa so‘rovni boshlash u ulanishni o‘z-o‘zidan bo‘shatmaydi.

Oqimli javobga kim mas’ulligini aniq qiling

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)

Ishga tushirishdan oldin hujjatdagi proksi manzilini almashtiring. Keyingi so‘rov oqim kontekstidan chiqilgandan keyin boshlanadi. Kod sikldan chiqsa yoki istisno bersa ham, bu chiqish javobni yopadi.

client.send(request, stream=True) kabi qo‘lda oqimda oxirgi yopish uchun kodingiz javobgar. AsyncClient uchun mos qo‘lda tozalash response.aclose() bilan kutiladi. O‘qilmagan javobni yopish sig‘imni bo‘shatadi, lekin asosiy ulanishni qayta ishlatmay, tashlashni talab qilishi mumkin.

Istisno nomini o‘qing

ConnectTimeout ulanish o‘rnatishga tegishli. ReadTimeout javob ma’lumotini kutishga tegishli. PoolTimeout ulanish o‘rnini olishga tegishli. Faqat «proksi taymauti» deb yozish tuzatishni tanlash uchun kerak bo‘lgan farqni yo‘qotadi.

Ulanish nuqtasi IPlarini almashtirishdan oldin ochiq javoblar, parallel vazifalar va ulanish chegaralarini tekshiring. Kattaroq hovuz asosli parallel yuk uchun mos bo‘lishi mumkin, ammo hech yopilmaydigan javoblarni tuzatmaydi. Faqat ilovaga band qilish uchun ko‘proq sig‘im beradi.

Mijozni butun ish yuki bo‘ylab qayta ishlatiladigan holda saqlang. Har so‘rov ishlayotgandek ko‘rinsin deb mijozni qayta yaratish hayot davri muammosini yashirishi va ulanish qayta ishlatilishini yo‘qotishi mumkin.

O'xshash maqolalar