Канал автора технического блога Khashtamov.com. На канале я делюсь различными интересными ссылками на статьи, видео, слайды о программировании и разработке ПО.
В python 3.11 в модуль asyncio завезли TaskGroup: https://bit.ly/3sNbVVe
Если кратно, то это замена для функции gather, которая запускает сразу несколько корутин. Стандартная функция gather непредсказуема и нужно помнить, что при отмене одной корутины из списка, другие не будут автоматически отменены. Мне приходилось дополнительно писать обёртку, которая обрабатывала возможные ошибки от асинхронных функций и делала явную отмену gather.
С приходом TaskGroup появляется некая атомарность у группы корутин, и соответственно более удобная и наглядная обработка ошибок.
Код взят из исходников EdgeDB: github.com/edgedb/…group.py
This is EdgeDB's TaskGroup class, adapted for Python 3.11.
In the individual commits you can see how I evolved this from the version in EdgeDB.
Here's a to-do list:
Figure out why...