Как отменять задачи в asyncio без зависаний и незавершённой очистки

Отмена задачи кажется простой, пока сервис не зависает при остановке, таймаут не оставляет запрос работать в фоне, а CancelledError исчезает внутри обработчика исключений. Разберём, как устроена кооперативная отмена в asyncio, где ставить точки ожидания и как использовать TaskGroup, timeout и shield, чтобы задачи завершались предсказуемо.
Изучить asyncio
Это отрывок статьи. Полную версию читайте на сайте источника по ссылке ниже.
Источник: Habr