Любая выполняющаяся корутина asyncio может быть отменена с помощью… — Библиотека Python разработчика | Книги по питону — TG.ME

Любая выполняющаяся корутина asyncio может быть отменена с помощью метода cancel(). В корутину будет выброшено исключение CancelledError, что приведёт к её завершению, а также завершению всех оборачивающих её корутин, если только ошибка не будет перехвачена и подавлена.

CancelledError является подклассом Exception, а значит, его можно случайно перехватить конструкцией try ... except Exception, которая предназначена для отлова «любых ошибок». Чтобы безопасно это обработать внутри корутины, приходится писать примерно так:


try:
await action()
except asyncio.CancelledError:
raise
except Exception:
logging.exception('action failed')


📲 Мы в MAX

👉@BookPython
t.me/BookPython/4084Translating to English…
👍2
June 5, 2026 1.3K 4