Python · Avançado · Inglês · Técnico
CancelledError
Exceção que o asyncio injeta numa tarefa ao cancelá-la com task.cancel(). Desde o Python 3.8 herda de BaseException, não de Exception, para não ser engolida por um except genérico.
Onde usar
Importa em timeouts, desligamento de servidores e TaskGroup, que dependem de cancelamento limpo. Em code review, o except que a captura deve fazer a limpeza e relançar.
Em código
import asyncio
async def worker():
try:
await asyncio.sleep(9)
except asyncio.CancelledError:
print('limpando')
raise # sempre propagueExemplos
Always re-raise CancelledError after cleaning up.
Sempre relance o CancelledError depois de limpar.
The timeout works by raising CancelledError inside the task.
O timeout funciona lançando CancelledError dentro da tarefa.
Cuidado
Não capture CancelledError e siga em frente sem relançar; a tarefa parece cancelada mas continua rodando, e quebra timeouts e TaskGroup.
Sinônimos
cancelamento de tarefa