Comment puis-je supprimer toutes les tâches en attente sans connaître le task_id
pour chaque tâche?
task
rabbitmq
celery
celery-task
nabizan
la source
la source
manage.py celery purge
(celeryctl
est désormais obsolète et disparaîtra en 3.1).redis-cli KEYS "celery*" | xargs redis-cli DEL
qui fonctionnait pour moi. Cela effacera toutes les tâches stockées sur le backend redis que vous utilisez.celery purge
(à l'intérieur de l'environnement virtuel pertinent). Oups - il y a une réponse avec le même ci-dessous ..... stackoverflow.com/a/20404976/1213425-A
est l'application Django oùcelery.py
se trouve le.Pour le céleri 3.0+:
Pour purger une file d'attente spécifique:
la source
celery -A proj purge
.Pour le céleri 2.x et 3.x:
Lors de l'utilisation d'un travailleur avec le paramètre -Q pour définir des files d'attente, par exemple
alors
celery purge
ne fonctionnera pas, car vous ne pouvez pas lui passer les paramètres de file d'attente. Il supprimera uniquement la file d'attente par défaut. La solution consiste à démarrer vos travailleurs avec un--purge
paramètre comme celui-ci:Cela exécutera cependant le travailleur.
Une autre option consiste à utiliser la sous-commande amqp de céleri
la source
Dans Céleri 3+:
CLI:
Par programmation:
http://docs.celryproject.org/en/latest/faq.html#how-do-i-purge-all-waiting-tasks
la source
J'ai trouvé que
celery purge
cela ne fonctionne pas pour ma configuration de céleri plus complexe. J'utilise plusieurs files d'attente nommées à différentes fins:La première colonne est le nom de la file d'attente, la seconde est le nombre de messages en attente dans la file d'attente et la troisième est le nombre d'écouteurs pour cette file d'attente. Les files d'attente sont:
La tâche d'analyse est une tâche de force brute qui fonctionnait très bien sur de petits ensembles de données, mais prend désormais plus de 24 heures à traiter. De temps en temps, quelque chose va mal et il restera bloqué en attente sur la base de données. Il doit être réécrit, mais jusque-là, quand il est bloqué, je tue la tâche, vide la file d'attente et réessaye. Je détecte le "blocage" en regardant le nombre de messages pour la file d'attente d'analyse, qui devrait être 0 (analyse terminée) ou 1 (en attente de la fin de l'analyse de la nuit dernière). 2 ou plus est mauvais et je reçois un e-mail.
celery purge
propose d'effacer les tâches de l'une des files d'attente de diffusion, et je ne vois pas d'option pour choisir une autre file d'attente nommée.Voici mon processus:
la source
celeryctl purge
n'a pas fonctionné avec les files d'attente nommées.python manage.py celery amqp queue.purge <queue_name>
fait. Je pense que le contexte est utile pour ceux qui ont des configurations complexes, afin qu'ils puissent comprendre ce qu'ils doivent faire en cas d'celeryctl purge
échec pour eux.manage.py
dans mon Celery 3.1.17, le fichier a-t-il été supprimé ou juste une nouvelle fessée? J'ai cependant trouvé ce qui ressemble à l'interface correspondante (queue.purge
)*/bin/amqp.py
. Mais après avoir essayé de corréler le contenu du fichier avec la documentation, je dois malheureusement admettre que Celery est malheureusement sans papiers et aussi un travail très compliqué, du moins à en juger par son code source.manage.py
est le script de gestion de Django, etmanage.py celery
exécute le céleri après avoir chargé la configuration à partir des paramètres de Django. Je n'ai pas utilisé le céleri en dehors de Django, mais lacelery
commande incluse peut être celle que vous recherchez: celery.readthedocs.org/en/latest/userguide/monitoring.htmlDans Céleri 3+
http://docs.celryproject.org/en/3.1/faq.html#how-do-i-purge-all-waiting-tasks
CLI
Purger la file d'attente nommée:
Purger la file d'attente configurée
Donc, pour purger toute la file d'attente, les travailleurs doivent être arrêtés.
la source
Si vous souhaitez supprimer toutes les tâches en attente ainsi que les tâches actives et réservées pour arrêter complètement Celery, voici ce qui a fonctionné pour moi:
la source
1. Pour purger correctement la file d'attente des tâches en attente, vous devez arrêter tous les travailleurs ( http://celery.readthedocs.io/en/latest/faq.html#i-ve-purged-messages-but-there-are- encore-messages-laissés dans la file d'attente ):
ou (dans le cas où RabbitMQ / courtier de messages est géré par le superviseur):
2. ... puis purgez les tâches d'une file d'attente spécifique:
3. Démarrez RabbitMQ:
ou (dans le cas où RabbitMQ est géré par le superviseur):
la source
commande celery 4+ celery purge pour purger toutes les files d'attente de tâches configurées
par programme:
toutes les tâches en attente seront purgées. Référence: celerydoc
la source