Отдельно разберём 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
❗️ԱՄՆ-ում միջադեպ է տեղի ունեցել UFC մարտիկ Արման Ծառուկյանի հետ․ նրան իջեցրել են ինքնաթիռից՝ թռիչքի ընթացքում հեռախոսով զբաղված լինելու պատճառով։
Մարզիկը մեկնում էր մասնակցելու Real American Freestyle 8 մրցաշարին։
#UFC
Shara "Bullet" will face Michal Oleksiejczuk
The fight will be the co-main event of the UFC tournament in Abu Dhabi, scheduled for August 3.
#UFC
👁Subscribe to Main Event | Sport News
Khamzat Chimaev on his return to the octagon
"There is no fighter in the UFC who has won seven fights and hasn't fought for the title. Right now, I'm training in Russia, at 'Akhmat.' I've never had conditions like this anywhere else before."
#UFC
👁Subscribe to Main Event | Sport News
Масштабный проект для турнира UFC
Трамп анонсировал строительство стадиона на 100 000 мест для турнира UFC рядом с Белым домом. Это будет самое массовое мероприятие в истории UFC, превосходящее предыдущий рекорд в 57 000 зрителей.
#UFC#Спорт
Russia News — Подпишись