Комментарии 6
Эм я может что то путаю, но открытие файла так же как и его чтение в питоне не является асинхронной операцией, т.е. все эти корутины будут выполнены последовательно а не конкурентно. Может стоило ради примера использовать код (и библиотеки типа aiohttp или httpx) который бы скачивал какие то данные по сети?
Здесь мы проверяем выбрасывание исключения при отсутствующем файле, для этого достаточно использовать синхронную операцию. Конечно же, в реальных условиях надо было бы использовать async with aiofiles.open, но это потребовало бы установки aiofiles (или aiohttp), а мы используем REPL в docker-образе (конечно же и тут можно было бы применить pip.main(['install', 'aiofiles']), но это бы несколько усложнило пример).
> чтение в питоне не является асинхронной операцией
Да, асинхронные задачи в заголовке статьи, россыпь async в коде и совершенно синхронный код под капотом, python...
Python 3.11 TaskGroups WorkGroups ;)
asyncio.TaskGroup
это мощная фишка из структурного асинхронного программирования и я бы назвал это основным в новости, а отлов групп исключений (имхо) в основном дополняет этот механизм (хотя группы исключений и возникли раньше).
TaskGroup
запилен лично Гвидо , на основе уже отлаженного кода и идей (trio, anyio), что дает надежду на мощный импульс нового стиля асинхронного программирования.
Достаточно только сказать, что Гвидо предлагает считать asyncio.gather
неприоритетным способом запускать группы задач.
Группы асинхронных задач в Python 3.11