Функция 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
❌❌PROBABILE ERRORE AMAZON HAUL!❌❌
1️⃣ Andate su questa pagina
👉https://amzlink.to/az0kpRTfZTJBB
2️⃣ Aggiungete almeno 50€ di prodotti
3️⃣ Gli sconti si cumuleranno arrivando, in alcuni casi, anche al 90% complessivo!🤯
🚨 VELOCI PRIMA CHE ESAURISCA TUTTO
#affiliate
🚨
🚨TERMINA OGGI‼️
🔈3 MESI DI AUDIBLE A 0,99€/mese
👉https://amzlink.to/az0ag4yAJBW9E
✅Nessun obbligo di rinnovo. Puoi disdire anche subito e mantenere comunque i mesi gratuiti!
#affiliate
PROMO BLACKVIEW 💻
🤖BLACKVIEW SCM6 MONITOR PORTATILE, 14 ", Full-HD, 1920 x 1080 Pixel, tempo di risposta 5 ms
💰A soli 129,00€ invece di 209,00€
👉https://tidd.ly/4dDUUpH
#affiliate
🔝 BEST CHOICE SMARTPHONE
🤖POCO X8 Pro - Smartphone 6.59" Dimensity 8500-Ultra, batteria da 6500 mAh, sensore Sony IMX882 da 50MP con OIS
💰A soli 262,52€ invece di 497,49€
🎟Coupon: SRIT30
👉https://s.click.aliexpress.com/e/_c3IZFhuH
#affiliate
💣 INSTA 360 E DJI
🤖Insta360 X5 Action Camera Nuova 8K 30fps Lenti Sostituibili Triplo Chip AI Luce Bassa
💰A soli 371,00€ invece di 979,92€
🎟Coupon: ITAR45
👉https://s.click.aliexpress.com/e/_c3bf5bul
#affiliate
📱Samsung Galaxy S26 Ultra 512GB Smartphone Sky Blue
💰A soli 1.299,00€ invece di 1.699,00€
👉https://amzlink.to/az0wMgfYWKvuS
📱Samsung Galaxy S26+ Smartphone 512GB Sky Blue
💰A soli 1.099,00€ invece di 1.489,00€
👉https://amzlink.to/az0UNqjuGrtyx
#affiliate