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 ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਖੁੱਲ੍ਹੇ ਜਵਾਬ, ਸਮਕਾਲੀ ਕੰਮ ਅਤੇ ਕਨੈਕਸ਼ਨ ਹੱਦਾਂ ਵੇਖੋ। ਸਹੀ ਸਮਕਾਲੀ ਭਾਰ ਲਈ ਵੱਡਾ ਪੂਲ ਢੁਕਵਾਂ ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਕਦੇ ਬੰਦ ਨਾ ਹੋਣ ਵਾਲੇ ਜਵਾਬ ਠੀਕ ਨਹੀਂ ਕਰਦਾ। ਇਹ ਸਿਰਫ਼ ਐਪ ਨੂੰ ਭਰਨ ਲਈ ਵੱਧ ਸਮਰੱਥਾ ਦਿੰਦਾ ਹੈ।

ਪੂਰੇ ਕੰਮ ਦੌਰਾਨ ਕਲਾਇੰਟ ਮੁੜ ਵਰਤਣਯੋਗ ਰੱਖੋ। ਹਰ ਬੇਨਤੀ ਚੱਲਦੀ ਦਿਖਾਉਣ ਲਈ ਕਲਾਇੰਟ ਦੁਬਾਰਾ ਬਣਾਉਣਾ ਜੀਵਨ ਚੱਕਰ ਦਾ ਮਸਲਾ ਲੁਕਾ ਸਕਦਾ ਹੈ ਅਤੇ ਕਨੈਕਸ਼ਨ ਦੀ ਮੁੜ ਵਰਤੋਂ ਗੁਆ ਸਕਦਾ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ