В asyncio вы делаете task.cancel(), а внутри корутины стоит:
try:
await do_io()
except Exception:
log("error")
👾 — Отмена не поймается, т.к. CancelledError — потомок BaseException
👍 — Отмена будет поймана этим except, и если не пере-бросить, задача завершится «успехом», фактически проглотив отмену
🥰 — Отмена превратится в TimeoutError
⚡️ — Исключение поднимется мимо except и всегда завершит задачу как отменённую
Библиотека задач по Python
Post #1546
817
- 👾 5