Функция asyncio.wait() это еще один способ вызвать множество асинхронных задач.
Она работает в нескольких режимах.
1. Самый простой - ждем завершения всех задач
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(10)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.ALL_COMPLETED
)
for task in done:
try:
print(task.result())
except Exception as e:
print(e)
Очень похоже на gather, но работает не так.
▫️возвращает не результаты, а два сета с объектами Task у которых можно забрать результат через task.result() если они в списке done
▫️не гарантирует порядок результатов так как оба объекта это set
▫️не выбрасывает исключение когда оно появляется, а сохраняет его в Task. Исключение появится когда попробуете забрать резултьтат.
2. Ждем завершения первой задачи, даже если там ошибка.
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(3)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_COMPLETED
)
# в done может быть несколько задач!
for task in done:
try:
print(task.result())
except Exception as e:
print(f"Fail: {e}")
# Оставшиеся задачи в pending, как правило, нужно отменить, иначе они будут продолжать работать
for task in pending:
task.cancel()
В сете done будут таски которые успели завершится, причем как успешно так и нет.
3. До первой ошибки.
Тоже самое, но с аргументом FIRST_EXCEPTION
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_EXCEPTION
)
Функция завершается как только первая задача упадет с ошибкой.
Учтите, что в любом случае done вы можете обранужить несколько задач, как с ошибками так и успешные.
↗️ Полный листинг примеров здесь
#async
Ministro dell’ambiente e della sicurezza energetica Gilberto #Pichetto: “L'aggiornamento del Pniec (Piano Energia e Clima), da trasmettere alla Commissione europea entro giugno 2024, riporterà anche analisi di scenario contenenti una possibile quota di energia prodotta da fonte nucleare nel periodo 2030-2050.” - ANSA
@UltimoraPolitics
Piemonte, scongiurato il blocco della circolazione per i veicoli Diesel Euro5: ok del Cdm al rinvio del contestato provvedimento a ottobre 2024. Il ministro dell'Ambiente, Gilberto #Pichetto Fratin: "L'obiettivo più importante era evitare il blocco dal 15 settembre. Ci siamo riusciti, ma la soluzione non era semplice e il risultato per nulla scontato"
@UltimoraPolitics
Crisi climatica, al Giffoni Film Festival una ragazza ammette di avere "l'eco-ansia" e dice di non voler fare figli in un mondo così a rischio. Poi si rivolge al ministro dell'Ambiente chiedendogli commuovendosi: "Ma lei non ha paura per i suoi figli?". A quel punto, #Pichetto Fratin, che è anche nonno, scoppia a piangere e asciugandosi le lacrime ribatte: "Io ho la forza del dubbio, ho un dovere verso la carica che ricopro verso di voi e verso i miei nipoti"
@UltimoraPolitics
Il Ministro #Pichetto annuncia che al CdM del 23 maggio "verrà deliberato lo stato di calamità" per le zone colpite dall'alluvione in Emilia-Romagna e "si risponderà ai primi interventi. E' già stato annunciato il blocco dei mutui e delle riscossioni tributarie." (via Ansa)
@UltimoraPolitics
Ministro dell’ambiente e della sicurezza energetica Gilberto #Pichetto: “L'aggiornamento del Pniec (Piano Energia e Clima), da trasmettere alla Commissione europea entro giugno 2024, riporterà anche analisi di scenario contenenti una possibile quota di energia prodotta da fonte nucleare nel periodo 2030-2050.” - ANSA
@UltimoraPolitics
Rigassificatore Piombino, Ministro #Pichetto: "Ci opporremo al ricorso del Comune. Attendiamo la sentenza del Tar. Abbiamo bisogno di quei 4-5 miliardi di metri cubi che verrebbero da Piombino"
@UltimoraPolitics24
Il ministro per l'Ambiente e la Sicurezza energetica, Gilberto #Pichetto, pone a nome del governo la questione di fiducia alla #Camera sul cosiddetto decreto Rigassificatori
@UltimoraPolitics
#UE
❗️ L'annuncio del Ministro dell'Ambiente, Gilberto #Pichetto: "Il Consiglio Energia ha approvato il tetto al prezzo del gas. E’ la vittoria dei cittadini italiani ed europei che chiedono sicurezza energetica. E’ la vittoria dell’Italia che ha creduto e lavorato per raggiungere questo accordo"
@UltimoraPolitics
Gilberto #Pichetto Fratin (#FI), Ministro dell’Ambiente e della sicurezza energetica: “l’Italia è pronta a dire addio al carbone, la fonte fossile che genera più emissioni di gas serra. Potremmo arrivare a chiudere tutte le centrali a carbone nei prossimi mesi, anche se per l’attuale scenario geopolitico è più probabile parlare dell’anno prossimo (2027 per la Sardegna)”. (La Stampa)
@UltimoraPolitics24