Отдельно разберём 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
The moment you all have been waiting for! ⌛️
Welcome the Warriors for India ka Tyohaar! 🔥
Fasten your seat belts for a crazy #IPL journey with #Vision11 & #CSK
🤜🤛
Ab aayega maza!
Download #Vision11 now!
https://vision11.in/APK/vision11.apk
Kursi ki peti baandh lijiye mausam bigadne wala hai, Fantasy Apps ka Pathaan is here!
Download the #Vision11 App & make your team now.
#IskiJhalakSabseAlag#Vision11#Csk#Pathaan
🚨 GRAND WINNINGS ALERT 🚨
Play the MEGA GL of the Indian T20 League #CSK vs Gujarat and take home ₹ 1 CRORE!! 💸💸💸
₹5 LAKHS ka FREE giveaway bhi hai, toh socho mat bas contests join karo aur jeeto on #Vision11!! 💪💪
Download #Vision11 now! 📲#IskiJhalakSabseAlag
https://vision11.in/APK/vision11.apk
#vision11#sapnokavision#vision11official#iskijhalaksabsealag
Nahi rokte to Guinness World Record bana deta Ben😂!
Download the #Vision11 App and Make your team now.
Ben ko captain banao kya pata Ben aapka bhi naam lele🤭!
#IskiJhalakSabseAlag#BenStokes#Csk#Vision11#BestFantasyApp