Como posso excluir todas as tarefas pendentes sem saber o task_id
para cada tarefa?
task
rabbitmq
celery
celery-task
nabizan
fonte
fonte
manage.py celery purge
(celeryctl
agora está obsoleto e desapareceu na versão 3.1).redis-cli KEYS "celery*" | xargs redis-cli DEL
que funcionou para mim. Isso eliminará todas as tarefas armazenadas no back-end do redis que você está usando.celery purge
(dentro do ambiente virtual relevante). Opa! - há uma resposta com a mesma abaixo ... stackoverflow.com/a/20404976/1213425-A
é o aplicativo Django ondecelery.py
está localizado.Para o aipo 3.0 ou superior:
Para limpar uma fila específica:
fonte
celery -A proj purge
.Para o aipo 2.xe 3.x:
Ao usar o trabalhador com o parâmetro -Q para definir filas, por exemplo
então
celery purge
não funcionará, porque você não pode passar os parâmetros da fila para ele. Ele excluirá apenas a fila padrão. A solução é iniciar seus trabalhadores com--purge
parâmetros como este:No entanto, isso executará o trabalhador.
Outra opção é usar o subcomando amqp do aipo
fonte
No Aipo 3+:
CLI:
Programaticamente:
http://docs.celeryproject.org/en/latest/faq.html#how-do-i-purge-all-waiting-tasks
fonte
Descobri que
celery purge
isso não funciona para minha configuração de aipo mais complexa. Eu uso várias filas nomeadas para diferentes propósitos:A primeira coluna é o nome da fila, a segunda é o número de mensagens aguardando na fila e a terceira é o número de ouvintes para essa fila. As filas são:
A tarefa de análise é uma tarefa de força bruta que funcionou muito bem em pequenos conjuntos de dados, mas agora leva mais de 24 horas para processar. Ocasionalmente, algo sai errado e fica parado aguardando no banco de dados. Ele precisa ser reescrito, mas até então, quando ele fica preso, eu mato a tarefa, esvazio a fila e tento novamente. Detecto "obstrução" observando a contagem de mensagens da fila de análise, que deve ser 0 (análise concluída) ou 1 (aguardando a conclusão da análise da noite passada). 2 ou superior é ruim e recebo um email.
celery purge
oferece para apagar tarefas de uma das filas de transmissão e não vejo uma opção para escolher uma fila nomeada diferente.Aqui está o meu processo:
fonte
celeryctl purge
não funcionou com filas nomeadas.python manage.py celery amqp queue.purge <queue_name>
fez. Eu acho que o contexto é útil para aqueles com configurações complexas, para que eles possam descobrir o que precisam fazer seceleryctl purge
falharem.manage.py
no meu Aipo 3.1.17, o arquivo foi removido ou está sendo novo? Eu encontrei o que parece com a interface correspondente (queue.purge
)*/bin/amqp.py
, no entanto. Mas, depois de tentar correlacionar o conteúdo do arquivo com a documentação, devo admitir lamentavelmente que o Celery é lamentavelmente indocumentado e também um trabalho muito complicado, pelo menos julgando-o pelo seu código-fonte.manage.py
é o script de gerenciamento do Django emanage.py celery
executa o aipo após carregar a configuração das configurações do Django. Eu não usei fora aipo de Django, mas o incluídocelery
comando pode ser o que você está procurando: celery.readthedocs.org/en/latest/userguide/monitoring.htmlEm Aipo 3+
http://docs.celeryproject.org/en/3.1/faq.html#how-do-i-purge-all-waiting-tasks
CLI
Limpar fila nomeada:
Limpar fila configurada
Portanto, para limpar toda a fila, os trabalhadores devem ser parados.
fonte
Se você deseja remover todas as tarefas pendentes e também as ativas e reservadas para interromper completamente o aipo, é isso que funcionou para mim:
fonte
1. Para limpar adequadamente a fila de tarefas em espera, é necessário parar todos os trabalhadores ( http://celery.readthedocs.io/en/latest/faq.html#i-ve-purged-messages-but-there-are- mensagens estáticas deixadas na fila ):
ou (caso o RabbitMQ / message broker seja gerenciado pelo Supervisor):
2. ... e limpe as tarefas de uma fila específica:
3. Inicie o RabbitMQ:
ou (caso o RabbitMQ seja gerenciado pelo Supervisor):
fonte
comando aipo 4+ aipo limpeza para limpar todas as filas de tarefas configuradas
programaticamente:
todas as tarefas pendentes serão eliminadas. Referencia: celerydoc
fonte