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.

Artikli relatati