asyncio.gather-ek return_exceptions=True-rekin zereginen salbuespenak bere emaitzen zerrendan jartzen ditu. Beraz, sorta salbuespenik gabe itxaroteak ez du esan nahi proxy eskaera guztiek arrakasta izan dutenik.

Eduki ezazu helmuga eta hautatutako proxy-a bidalitako awaitable-en ondoan, eta gero aztertu emaitza bakoitza:

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-ek aplikazioaren eskaera-korutinak dauzka; routes-ek dagokien (url, proxy) bikoteak ordena berean dauzka. Erregistratze-funtzioak aplikazioaren beraren emaitza-kudeaketa dira. gather-ek sarrerako ordena gordetzen du amaiera-ordena desberdina denean ere.

Sailkatu haur-zereginen CancelledError itzulia bertan behera uzte gisa, haren proxy-a erruduntzat jo beharrean. Kanpoko gather-en bertan behera uztea amaitu gabeko seme-alabei transmititzen zaie oraindik; return_exceptions-ek ez du bertan behera uzte hori ohiko arrakasta bihurtzen.

HTTP egoeraren kudeaketa ere eskaera-eragiketaren barruan dago. aiohttp-ek ez du lehenespenez HTTP erro bakoitzeko salbuespenik botatzen, beraz itzuli egoera edo aplikatu raise_for_status zereginaren politikaren arabera.

Emaitzak ikusgai daudenean, aplikazioak konexio-hutsegiteak helmugako erantzunetatik bereiz ditzake eta zein lanek merezi duen beste saiakera bat erabaki.

Erlazionatutako artikuluak