Функция 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
La #Germania boccia la proposta di bilancio UE: “Finanziariamente sproporzionata”. Il ministro Klingbeil critica la tassa sulle grandi imprese e il prelievo sul tabacco: “Segnale sbagliato, Berlino non può sostenerla”.
@UltimoraPolitics
🇩🇪#Germania EXIT POLL — Alternative für Deutschland domina le elezioni statali in due land della Germania Est: vince col 33% in Turingia ed è testa a testa con la CDU col 31,5 in Sassonia.
@UltimoraPolitics
❗️🇩🇪 #Germania, dal 1° aprile la cannabis diventa ufficialmente legale per uso ricreativo. Ok dal Parlamento: 407 a favore, 226 i contrari, 4 gli astenuti @UltimoraPolitics
❗️🇩🇪#Germania, dal 1° aprile la cannabis diventa ufficialmente legale per uso ricreativo. Ok dal Parlamento: 407 a favore, 226 i contrari, 4 gli astenuti
@UltimoraPolitics
Tensione Roma-Berlino sui migranti, fonti Palazzo Chigi: "Grande stupore per la notizia secondo la quale un portavoce del ministero degli Esteri della repubblica federale di #Germania avrebbe annunciato un imminente finanziamento a delle Ong per un progetto di assistenza di migranti sul territorio italiano e un progetto di "salvataggi" in mare. Si confida che la notizia sia priva di ogni fondamento perché il finanziamento da parte della Germania di attività di Ong sul territorio italiano sarebbe una gravissima anomalia"
@UltimoraPolitics
#Germania
Il Bundestag approva il progetto di legge sull'introduzione del reddito di cittadinanza: sostituirà da gennaio 2023 l'Hartz IV e avrà come obiettivo non più trovare un impiego per i disoccupati il più rapidamente possibile, ma formarli a un lavoro a tempo indeterminato. Il sussidio di disoccupazione verrà aumentato da 449 a 502 euro al mese. Le prestazioni dovrebbero essere ridotte nei primi sei mesi dalla ricezione del reddito di cittadinanza soltanto in casi eccezionali, qualora il disoccupato non collabori con costanza con i centri per l'impiego nella ricerca di un lavoro. Oltre al reddito di cittadinanza, previsti 150 euro al mese per la formazione continua per chi ottiene una qualifica professionale o 75 euro per chi intraprende altre misure in questo campo
@UltimoraPolitics
🇩🇪#Germania – Un alto funzionario del Ministero degli Esteri tedesco, con competenza per il Medio Oriente, parteciperà come osservatore alla riunione del Board of Peace del presidente Donald #Trump, riferiscono fonti del governo
@UltimoraPolitics24
#Germania, #Iran: la Germania non parteciperà attivamente alle azioni militari contro l'Iran ma difenderà i propri soldati presenti in Giordania e in Iraq se verrannoa attaccati. Lo ha fatto sapere il Ministro degli Esteri Johann Wadephul questa mattina.
Alcune basi militari in cui i soldati tedeschi sono presenti sono state prese di mira dall'Iran in questi giorni. Fino a questo momento non si segnalano feriti.