ExpertiDict

Python · Avançado · Inglês · Técnico

CancelledError

/ˈkænsəld ˈɛɹəɹ/substantivo

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 propague

Exemplos

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

Veja também

Todos os termos de Python