Configuração

Todas as configurações do plugin são opcionais — os defaults abaixo já funcionam para a maioria dos projetos. Definidas em django_celery_task_monitor/settings.py e lidas do settings.py do projeto host.

CELERY_TASK_MONITOR_POLL_INTERVAL

Intervalo padrão (em milissegundos) usado pelo JavaScript de polling quando o ModelAdmin não define celery_poll_interval.

CELERY_TASK_MONITOR_POLL_INTERVAL = 5000  # default

CELERY_TASK_MONITOR_TRACE_PERMISSION

Nome completo (app_label.codename) da permissão que libera a visualização do stacktrace completo de uma tarefa que falhou. Ver Permissões.

CELERY_TASK_MONITOR_TRACE_PERMISSION = "django_celery_task_monitor.view_task_trace"  # default

CELERY_TASK_MONITOR_FRIENDLY_ERROR_MESSAGE

Mensagem exibida a usuários sem a permissão acima quando uma tarefa falha.

CELERY_TASK_MONITOR_FRIENDLY_ERROR_MESSAGE = "A tarefa falhou. Fale com o suporte."

CELERY_TASK_MONITOR_LIST_PER_PAGE

Número de itens por página no changelist do TaskLogAdmin.

CELERY_TASK_MONITOR_LIST_PER_PAGE = 50  # default

Configuração do Celery no projeto host

O plugin não configura o Celery — isso continua sendo responsabilidade do seu projeto. Para o polling funcionar, o backend de resultados do Celery precisa ser o django-db (fornecido por django-celery-results):

CELERY_RESULT_BACKEND = "django-db"

Se você usar CELERY_TASK_ALWAYS_EAGER = True (por exemplo, em testes ou para rodar sem worker/broker), lembre-se de também ativar CELERY_TASK_STORE_EAGER_RESULT = True — caso contrário, tarefas eager não persistem o TaskResult e o polling nunca sai de PENDING:

CELERY_TASK_ALWAYS_EAGER = True
CELERY_TASK_STORE_EAGER_RESULT = True  # essencial para eager + monitor

Também ative CELERY_TASK_TRACK_STARTED = True. Sem isso, o Celery nunca registra o momento em que a execução começou (TaskResult.date_started fica null), e o painel ao vivo do change form (ver Uso Básico) fica preso em “Tarefa enfileirada.” mesmo com a tarefa já em execução:

CELERY_TASK_TRACK_STARTED = True

Importante

Em modo eager (CELERY_TASK_ALWAYS_EAGER = True), a tarefa roda de forma síncrona, dentro da própria requisição HTTP que a disparou — ela já terminou antes mesmo da página ser reenviada ao navegador. Ou seja, mesmo com CELERY_TASK_TRACK_STARTED ativado, os estados intermediários (“em processamento”, progresso percentual) nunca chegam a ser vistos via polling: o painel salta direto de “Tarefa enfileirada.” para o resultado final. Isso é esperado, não um bug — para ver a progressão completa ao vivo, use um broker de verdade (Redis/RabbitMQ) e rode um worker Celery separado (sem CELERY_TASK_ALWAYS_EAGER).