105 votes

Comment vérifier l'état d'une tâche dans Celery ?

Comment vérifier si une tâche est en cours d'exécution dans celery (plus précisément, j'utilise celery-django) ?

J'ai lu la documentation, et j'ai cherché sur Google, mais je ne vois pas d'appel comme celui-ci :

my_example_task.state() == RUNNING

Mon cas d'utilisation est que j'ai un service externe (java) pour le transcodage. Lorsque j'envoie un document à transcoder, je veux vérifier si la tâche qui exécute ce service est en cours d'exécution, et si non, la (re)lancer.

J'utilise les versions stables actuelles - 2.4, je crois.

-1voto

taotao.li Points 980

Pour les tâches simples, nous pouvons utiliser http://flower.readthedocs.io/en/latest/screenshots.html y http://policystat.github.io/jobtastic/ pour effectuer le contrôle.

et pour les tâches compliquées, par exemple une tâche qui concerne de nombreux autres modules. Nous recommandons d'enregistrer manuellement la progression et le message sur l'unité de tâche spécifique.

-1voto

Saurabh I Points 21
res = method.delay()

print(f"id={res.id}, state={res.state}, status={res.status} ")

print(res.get())

4 votes

S'il vous plaît, ne postez pas seulement du code comme réponse, mais fournissez également une explication de ce que votre code fait et comment il résout le problème de la question. Les réponses accompagnées d'une explication sont généralement plus utiles et de meilleure qualité, et sont plus susceptibles d'attirer des votes positifs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X