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 له بدلولو مخکې پرانیستي ځوابونه، هممهاله دندې او د اتصال حدونه وګورئ. لویه ټولګه د مشروع هممهاله بار لپاره مناسبه کېدای شي، خو هېڅکله نه تړل کېدونکي ځوابونه نه سموي. یوازې اپلېکېشن ته د نیولو لپاره زیات ظرفیت ورکوي.

کلاینټ د ټول کاري بار په اوږدو کې د بیا کارونې وړ وساتئ. د هرې غوښتنې د ظاهري کار لپاره کلاینټ بیا جوړول د ژوند پړاو ستونزه پټولای او د اتصال بیا کارونه له منځه وړلای شي.

اړوندې مقالې