asyncio.gather mei return_exceptions=True set de útsûnderingen fan taken yn syn resultaatlist. It wachtsjen op de batch sûnder útsûndering betsjut dus net dat elke proxy-oanfraach slagge is.

Hâld de bestimming en de keazen proxy njonken de yntsjinne awaitables en ûndersykje dêrnei elk resultaat:

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 befettet de oanfraachkorutines fan 'e applikaasje; routes befettet harren oerienkommende (url, proxy)-pearen yn deselde folchoarder. De registraasjefunksjes binne de eigen resultaatferwurking fan 'e applikaasje. gather behâldt de ynfierfolchoarder sels as de folchoarder fan foltôging oars is.

Klassifisearje in weromjûn CancelledError fan in bernopdracht as annulearring ynstee fan syn proxy de skuld te jaan. Annulearring fan 'e bûtenste gather wreidet him noch altyd út nei ûnfoltôge bern; return_exceptions makket dy annulearring net ta gewoan súkses.

It ôfhandeljen fan HTTP-status heart ek binnen de oanfraachoperaasje. aiohttp smyt standert gjin útsûndering foar elke HTTP-flater, dus jou de status werom of pas raise_for_status ta neffens it belied fan 'e taak.

As de resultaten sichtber binne, kin de applikaasje ferbiningsflaters ûnderskiede fan antwurden fan 'e bestimming en beslute hokker wurk noch in poging fertsjinnet.

Relatearre artikelen