Feelerhaft Proxy-Ufroen mat asyncio.gather behandelen
Inspizéiert d'Ausnamen, déi asyncio.gather zréckschéckt, a haalt all Resultat mam gewielte Proxy verbonnen.
asyncio.gather mat return_exceptions=True setzt d'Ausname vun den Aufgaben an seng Resultatslëscht. Dofir heescht et net, datt all Proxy-Ufro erfollegräich war, just well een de Batch ouni Ausnam ofwaart.
Halt d'Destinatioun an de gewielte Proxy nieft den agebonnen Awaitables, an iwwerpréif duerno all Resultat:
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 enthält d'Ufro-Korutinne vun der Applikatioun; routes enthält déi entspriechend (url, proxy)-Paaren an der selwechter Reihenfolge. D'Opzeechnungsfunktioune sinn d'Resultatsbehandlung vun der Applikatioun selwer. gather behält d'Input-Reihenfolge, och wann d'Reihenfolge vum Ofschloss anescht ass.
Klassifizéier en zréckginnene CancelledError vun enger Kand-Aufgab als Annulatioun, amplaz de Proxy dovunner ze beschëllegen. D'Annulatioun vum baussenzege gather verbreet sech nach ëmmer op onofgeschlosse Kanner; return_exceptions mécht déi Annulatioun net zu engem normale Succès.
D'Behandlung vum HTTP-Status gehéiert och an d'Ufrooperatioun. aiohttp léisst net standardméisseg fir all HTTP-Feeler eng Ausnam aus, also gitt de Status zréck oder uwent raise_for_status geméiss der Politik vun der Aufgab.
Soubal d'Resultater siichtbar sinn, kann d'Applikatioun Verbindungsfeeler vun den Äntwerten vun der Destinatioun ënnerscheeden an entscheeden, wéi eng Aarbecht nach en Versuch verdéngt.