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 বদলানোর আগে খোলা রেসপন্স, সমসাময়িক কাজ ও সংযোগ সীমা দেখুন। যথাযথ সমসাময়িক কাজের জন্য বড় পুল উপযুক্ত হতে পারে, কিন্তু কখনও বন্ধ না হওয়া রেসপন্স ঠিক করে না। শুধু অ্যাপকে দখল করার আরও জায়গা দেয়।

পুরো কাজ জুড়ে ক্লায়েন্ট পুনর্ব্যবহারযোগ্য রাখুন। প্রতিটি অনুরোধ আপাতদৃষ্টিতে চালানোর জন্য ক্লায়েন্ট নতুন বানালে জীবনচক্রের সমস্যা লুকাতে পারে এবং সংযোগের পুনর্ব্যবহার নষ্ট হয়।

সম্পর্কিত নিবন্ধ