Immaniġġja Talbiet Proxy li Fallew bl-asyncio.gather
Iċċekkja l-eċċezzjonijiet li jirritorna asyncio.gather u żomm kull riżultat marbut mal-proxy magħżul.
asyncio.gather b'return_exceptions=True ipoġġi l-eċċezzjonijiet tal-kompiti fil-lista tar-riżultati tiegħu. Għalhekk l-istennija tal-lott mingħajr eċċezzjoni ma tfissirx li kull talba proxy rnexxiet.
Żomm id-destinazzjoni u l-proxy magħżul ħdejn l-awaitables sottomessi, imbagħad iċċekkja kull riżultat:
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 fih il-korutini tat-talbiet tal-applikazzjoni; routes fih il-parrijiet (url, proxy) korrispondenti fl-istess ordni. Il-funzjonijiet tar-reġistrazzjoni huma l-immaniġġjar tar-riżultati tal-applikazzjoni stess. gather iżomm l-ordni tal-input anki meta l-ordni tat-tlestija tkun differenti.
Ikklassifika CancelledError li jirritorna minn kompitu wild bħala kanċellazzjoni minflok ma tagħti l-ħtija lill-proxy tiegħu. Il-kanċellazzjoni tal-gather ta' barra għadha tinfirex lit-tfal mhux mitmuma; return_exceptions ma jibdilx dik il-kanċellazzjoni f'suċċess ordinarju.
L-immaniġġjar tal-istat HTTP ukoll jaqa' ġewwa l-operazzjoni tat-talba. aiohttp ma jtellax eċċezzjoni għal kull żball HTTP b'mod awtomatiku, għalhekk irritorna l-istat jew applika raise_for_status skont il-politika tal-kompitu.
Ladarba r-riżultati jkunu viżibbli, l-applikazzjoni tista' tiddistingwi l-fallimenti tal-konnessjoni mit-tweġibiet tad-destinazzjoni u tiddeċiedi liema xogħol jistħoqqlu tentattiv ieħor.