Sarrafa buƙatun wakili da suka gaza da asyncio.gather
Bincika keɓancewar da asyncio.gather ke mayarwa kuma riƙe kowane sakamako da alaƙa da wakilin da aka zaɓa.
asyncio.gather tare da return_exceptions=True yana saka keɓancewar ayyuka a cikin jerin sakamakonsa. Don haka jiran rukunin ba tare da keɓancewa ba yana nufin kowace buƙatar wakili ta yi nasara ba.
Riƙe makoma da zaɓaɓɓen wakili tare da awaitable da aka tura, sannan bincika kowane sakamako:
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 yana ɗauke da coroutines na buƙatun aikace-aikacen; routes yana ɗauke da ma'auratan (url, proxy) masu dacewa a cikin wannan tsari. Ayyukan rikodi sune sarrafa sakamakon aikace-aikacen kansa. gather yana kiyaye tsarin shigarwa ko da tsarin kammalawa ya bambanta.
Rarraba CancelledError da aka mayar daga aikin yaro a matsayin sokewa maimakon zargin wakilinsa. Sokewar gather na waje har yanzu tana yaɗuwa zuwa yaran da ba a gama ba; return_exceptions ba ya mai da wannan sokewar zuwa nasara ta yau da kullum.
Sarrafa matsayin HTTP ma yana cikin aikin buƙatar. aiohttp ba ya tayar da keɓancewa ga kowace kuskuren HTTP bisa tsoho, don haka mayar da matsayin ko yi amfani da raise_for_status bisa manufar aikin.
Da zarar an ga sakamakon, aikace-aikacen zai iya bambance gazawar haɗi da martanin makoma kuma ya yanke shawarar wane aiki ya cancanci wani ƙoƙari.