Huts egindako proxy eskaerak asyncio.gather-ekin kudeatzea
Aztertu asyncio.gather-ek itzultzen dituen salbuespenak eta eutsi emaitza bakoitza hautatutako proxyarekin lotuta.
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.