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.

Ähnlech Artikelen