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()ला await केले जाते. न वाचलेला प्रतिसाद बंद केल्याने क्षमता मोकळी होते, पण खालची जोडणी पुन्हा वापरण्याऐवजी टाकावी लागू शकते.

अपवादाचे नाव वाचा

ConnectTimeout जोडणी स्थापन करण्याबद्दल आहे. ReadTimeout प्रतिसाद डेटाच्या प्रतीक्षेबद्दल आहे. PoolTimeout जोडणीची जागा मिळवण्याबद्दल आहे. फक्त «प्रॉक्सी टाइमआउट» नोंदवल्यास योग्य दुरुस्ती निवडण्यासाठीचा फरक हरवतो.

एंडपॉइंट IP बदलण्याआधी उघडे प्रतिसाद, समवर्ती कामे आणि जोडणी मर्यादा पाहा. योग्य समवर्ती भारासाठी मोठा पूल ठीक असू शकतो, पण कधीच बंद न होणारे प्रतिसाद दुरुस्त करत नाही. तो ॲपला व्यापण्यासाठी फक्त जास्त क्षमता देतो.

संपूर्ण कामात क्लायंट पुन्हा वापरण्याजोगा ठेवा. प्रत्येक विनंती चालते असे दिसण्यासाठी क्लायंट नव्याने बनवल्यास जीवनचक्राची समस्या लपू शकते आणि जोडणीचा पुनर्वापर गमावला जातो.

संबंधित लेख