د asyncio.gather سره د ناکامو پروکسي غوښتنو سمبالول
هغه استثناوې وګورئ چې asyncio.gather بیرته راګرځوي او هر نتیجه د ټاکل شوي پروکسي سره تړلې وساتئ.
asyncio.gather د return_exceptions=True سره د دندو استثناوې په خپل د نتایجو لیست کې ځای پرځای کوي. نو د یوې ډلې انتظار پرته له استثنا معنا دا نه ده چې هره پروکسي غوښتنه بریالۍ شوه.
منزل او ټاکل شوی پروکسي د لیږل شوو awaitable ترڅنګ وساتئ، بیا هره نتیجه وګورئ:
outcomes = await asyncio.gather(*jobs, return_exceptions=True)
for (url, proxy), outcome in zip(routes, outcomes):
if isinstance(outcome, BaseException):
record_failure(url, proxy, outcome)
else:
record_success(url, proxy, outcome)
jobs د اپلیکیشن د غوښتنو کوروټینونه لري؛ routes د هغوی اړوند (url, proxy) جوړې په همدې ترتیب لري. د ثبت فعالیتونه د اپلیکیشن خپله د نتایجو سمبالونه ده. gather د بشپړیدو ترتیب توپیر ولري هم د ننوتلو ترتیب ساتي.
د ماشوم دندې بیرته راګرځیدلې CancelledError د هغې پروکسي په تور نه لګولو سره د لغوه کیدو په توګه وګڼئ. د بهرني gather لغوه کیدل لا هم نیمګړو ماشومانو ته خپریږي؛ return_exceptions هغه لغوه کیدل په عادي بریا نه بدلوي.
د HTTP حالت سمبالول هم د غوښتنې عملیاتو دننه دي. aiohttp په ډیفالټ ډول د هر HTTP تېروتنې لپاره استثنا نه پورته کوي، نو حالت بیرته راکړئ یا د دندې د تګلارې له مخې raise_for_status پلي کړئ.
کله چې نتایج ښکاره شي، اپلیکیشن کولی شي د اړیکې ناکامي د منزل له ځوابونو څخه جلا کړي او پریکړه وکړي چې کوم کار د بل هڅې وړ دی.