Функция 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
#TAPSWAP VIDEO CODE !!!
Task: Full-Time Students
Ans: 54z1s
Task: Remote Jobs
Ans: zkorac
Task: Earn Big In Crypto | Part 1
Ans: Q82V%
Task: Get Funding With No Cash Upfront
Ans: zksha
Task: Starting From Zero
Ans : honeym
Task : Earn Big In Crypto | Part 2
Ans: 9Q3#G
Task : Side Hustles For Rural Towns
Ans: e8pap
Task : Earn Big In Crypto | Part 3
Ans : X5OUT
Task: Fake Paparazzi
Ans: startn
Task: Personalized Gift Business
Ans: laser
Task: One Person Business
Ans: build
Task: Earn Up To $5,000 As A Crypto Ambassador | Part 1
Ans: 5HD*2
Task: Quit Your 9-5 Job
Ans: strategy
Task: Antique Furniture For Profit
Ans: antique
Task: Win An IPhone & Up To 30,000 USDT
Ans: 9E6R&
Task: Earn Up To $5,000 As A Crypto Ambassador | Part 2
Ans: E4$&3
Task: Shopify Dropshipping Store
Ans: shopify
Task: Game Playtesting
Ans: g8wqa
Task: Gaming Into Cash
Ans: l4le1t
#Tapswap Cinema Codes 27 January 🗓️
☑️Which Crypto Platforms
→2nez
☑️Turn Your Space Into Cash
→cah5
☑️Top Crypto Exchanges
→qhto
☑️stop being broke!
→vtaz
☑️franchise business
→em74
☑️monetize your hobby
→svth
☑️easy money using your car
→q4vd
☑️tapswap update
→waze
☑️make money fast
→sacz
LIKE, FOLLOW AND RETWEET
Join Tapswap 👉https://t.me/tapswap_mirror_1_bot?start=r_452308012