Cuireann asyncio.gather le return_exceptions=True eisceachtaí na dtascanna ina liosta torthaí. Mar sin ní chiallaíonn fanacht leis an mbeart gan eisceacht gur éirigh le gach iarratas proxy.

Coinnigh an ceann scríbe agus an proxy roghnaithe in aice na n-awaitables a cuireadh isteach, ansin scrúdaigh gach toradh:

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)

Tá coróidíní iarratais an fheidhmchláir in jobs; tá na péirí (url, proxy) comhfhreagracha in routes san ord céanna. Is éard atá sna feidhmeanna taifeadta ná láimhseáil torthaí an fheidhmchláir féin. Coinníonn gather ord an ionchuir fiú nuair a bhíonn ord an chríochnaithe difriúil.

Aicmigh CancelledError a thagann ar ais ó thasc linbh mar chealú seachas an milleán a chur ar a proxy. Scaipeann cealú an gather sheachtraigh fós chuig leanaí neamhchríochnaithe; ní chasann return_exceptions an cealú sin ina ghnáth-rath.

Baineann láimhseáil stádais HTTP le taobh istigh den oibríocht iarratais freisin. Ní ardaíonn aiohttp eisceacht do gach earráid HTTP de réir réamhshocraithe, mar sin tabhair an stádas ar ais nó cuir raise_for_status i bhfeidhm de réir pholasaí an taisc.

Nuair a bhíonn na torthaí le feiceáil, is féidir leis an bhfeidhmchlár teipeanna naisc a idirdhealú ó fhreagraí an chinn scríbe agus cinneadh a dhéanamh cén obair a thuilleann iarracht eile.

Ailt ghaolmhara