Отдельно разберём TaskGroup, который пришел на замену gather в Python 3.11.
Ключевые отличия
▫️create_task() возвращает объект asyncio.Task, у которого есть соответствюущие методы управления. То есть у нас больше контроля
▫️это контекстный менеджер, который гарантирует что все таски будут остановлены по выходу из контекста
▫️ошибка автоматически отменяет незавершенные задачи,
▫️except* передает нам ExceptionGroup, в котором каждую ошибку можно обработать отдельно
import asyncio
import random
async def do_it() -> str:
if random.random() < 0.1:
raise ValueError('Oops')
delay = random.uniform(0.5, 1.5)
await asyncio.sleep(delay)
return delay
async def main():
try:
async with asyncio.TaskGroup() as tg:
for _ in range(10):
tasks.append(tg.create_task(do_it()))
for t in tasks:
print(t.result())
except *ValueError as e:
for err in e.exceptions:
print(err)
asyncio.run(main())
Рекомендую изучить страницу Coroutines and Tasks из документации, где представлено больше интересных примеров и механизмов
- таймауты
- отмена задач
- создание задач из другого потока
#async
🐡Airdrop: FGC TOKEN (#FGC)
🐋 Total Prize: 2,500,000 $FGC Tokens
🐡 Per participant: 300 $FGC Tokens
🐙 Per referral: 60 $FCG
🐠 After the 2,500,000 $FCG Tokens running out, Airdrop will be ended.
🔗 Airdrop Link: t.me/FishgunAirdrop_Bot
🐠🐠🐠 A game similar to Bombcrypto, but it's not about dropping bombs, it's shooting fish. 🐠🐠🐠
🐳Visit our website: https://fishguncrypto.io/
🐳Contract: 0xE8C0815AFe114aa4EaB8E0dAC201Ad5E979E17F6
Disclaimer: Airdrop is 100% free. Don’t send any fee or penny for receiving AirDrop tokens. Just join Airdrop for free!
🐡Airdrop: FGC TOKEN (#FGC)
🐋 Total Prize: 2,500,000 $FGC Tokens
🐡 Per participant: 300 $FGC Tokens
🐙 Per referral: 60 $FCG
🐠 After the 2,500,000 $FCG Tokens running out, Airdrop will be ended.
🔗 Airdrop Link: t.me/FishgunAirdrop_Bot
🐠🐠🐠 A game similar to Bombcrypto, but it's not about dropping bombs, it's shooting fish. 🐠🐠🐠
🐳Visit our website: https://fishguncrypto.io/
🐳Contract: 0xE8C0815AFe114aa4EaB8E0dAC201Ad5E979E17F6
Disclaimer: Airdrop is 100% free. Don’t send any fee or penny for receiving AirDrop tokens. Just join Airdrop for free!