Отдельно разберём 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
80 лет спустя после Дня Победы в Тихом океане #VJDay мы отдаем дань уважения всем тем, кто сражался, кто попал в плен, и всем, кто пожертвовал собой.
Наша страна всегда будет в большом долгу перед теми, кто боролся за лучшее будущее.
#LestWeForget#VJDay#VEDay#VEDay80
#OTD 84 года назад 🥇 из арктических конвоев вышел из Хвалфьорда в Исландии в Россию и через 🔟 дней прибыл в Архангельск.
С августа 1941 года по май 1945 года было проведено 78 конвоев, и условия этих миссий были одними из самых тяжелых, с которыми сталкивались моряки антигитлеровской коалиции. Помимо немецких подводных лодок и авиации, они столкнулись с экстремальным холодом, штормами и льдом.
Уровень потерь судов в арктических конвоях был выше, чем на любом другом маршруте союзников. За всю кампанию арктических конвоев из-за немецких подводных лодок и авиации 🩸погибло более 3 тысяч человек.
Арктические конвои доказали, что союзники намерены помогать Советскому Союзу 👊 сопротивляться, тем самым временем готовясь к открытию Западного фронта в Европе.
Сегодня, как и каждый год, мы отдаем дань 🙏 уважения всем храбрым военнослужащим, которые участвовали в Арктических конвоях и отдали свои жизни.
#VEDay80#VE80#ArcticConvoys#VJDay#theUK