asyncio.gather ئارقىلىق مەغلۇپ بولغان proxy تەلەپلىرىنى بىر تەرەپ قىلىش
asyncio.gather قايتۇرىدىغان ئىستىسنا لارنى تەكشۈرۈپ، ھەر بىر نەتىجىنى تاللانغان proxy بىلەن مۇناسىۋەتلىك ساقلاڭ.
asyncio.gather return_exceptions=True بىلەن ۋەزىپىلەرنىڭ ئىستىسنا لارنى نەتىجە تىزىملىكىگە كىرگۈزىدۇ. شۇڭا ھېچقانداق ئىستىسنا بولماي بىر گۇرۇپپىنى ساقلىش ھەر بىر proxy تەلەپنىڭ مۇۋەپپەقىيەتلىك بولغانلىقىنى بىلدۈرمەيدۇ.
مەنزىلنى ۋە تاللانغان proxy نى ئەۋەتىلگەن 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 نى ئۇنىڭ proxy سىنى ئەيىبلەش ئورنىغا بىكار قىلىش دەپ تۈرگە ئايرىڭ. سىرتقى gather نىڭ بىكار قىلىنىشى يەنىلا تۈگىمىگەن بالىلارغا تارقىلىدۇ؛ return_exceptions بۇ بىكار قىلىشنى ئادەتتىكى مۇۋەپپەقىيەتكە ئايلاندۇرمايدۇ.
HTTP ھالىتىنى بىر تەرەپ قىلىشمۇ تەلەپ مەشغۇلاتىنىڭ ئىچىدە. aiohttp سۈكۈتتىكى ھالەتتە ھەر بىر HTTP خاتالىقى ئۈچۈن ئىستىسنا چىقارمايدۇ، شۇڭا ھالەتنى قايتۇرۇڭ ياكى ۋەزىپە سىياسىتىگە ئاساسەن raise_for_status نى قوللىنىڭ.
نەتىجىلەر كۆرۈنگەندە، ئەپ ئۇلىنىش كاشىلىسىنى مەنزىلنىڭ جاۋابىدىن ئايرىيالايدۇ ۋە قايسى خىزمەتنىڭ يەنە بىر سىناققا لايىق ئىكەنلىكىنى ھۆكۈم قىلالايدۇ.