Отдельно разберём 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
MASU × NOZOMI KUROKAWA
FW25 словно соединяет прошлое и будущее. Шлем становится символом путешественника, пересекающего пространство и время.
Следы жизни преврашаются в ценность: блеск кристаллов в «ранах» напоминает, что испытания тоже становятся частью драгоценного пути.
#masu#beliefmoscow#nozomikurokawa
"Flower Child"
Summer Editorial Part 1.
Для оформления заказа -@infobeliefmoscow
Благодарим флористическую студию LUPÍNE DELIVERY и арт-пространство LUPÍNE FLOWERS AND ART за помощь в организации съемки.
#masu#neighborhood#thebingobrothers#takahiromiyashitathesoloist
STAFF PICK: Zhenya.
CAV EMPT, LIBERAIDERS, Masu, ssstein, Neighborhood
Все вещи доступны в нашем магазине на Большой Дмитровке 20с2.
#cavempt#liberaiders#masu#ssstein#neighborhood
Caps Selection
Spring/Summer 2025
Для оформления заказа, уточнения цен и размеров - @infobeliefmoscow
#wtaps#alchemist#saintmx6#masu#cavempt#liberaiders#neighborhood