192 votes

Récupérer la liste des tâches d'une file d'attente dans le céleri

Comment puis-je récupérer une liste de tâches dans une file d'attente qui n'ont pas encore été traitées?

218voto

semarj Points 389

Vous devriez regarder ici: Guide de céleri - Inspecter les travailleurs

Fondamentalement ceci:

 >>> from celery.task.control import inspect

# Inspect all nodes.
>>> i = inspect()

>>> i.scheduled()
or:
>>> i.active()
 

En fonction de ce que vous voulez

13voto

ashish Points 309

Pour récupérer des tâches depuis le backend, utilisez cette

 from amqplib import client_0_8 as amqp
conn = amqp.Connection(host="localhost:5672 ", userid="guest",\
password="guest", virtual_host="/", insist=False)
chan = conn.channel()
name, jobs, consumers = chan.queue_declare(queue="queue_name", passive=True)
 

4voto

Sebastian Blask Points 1272

Je pense que la seule façon d'obtenir les tâches en attente est de garder une liste de tâches que vous avez commencé et laisser la tâche supprimer de la liste quand il est démarré.

Avec rabbitmqctl et list_queues vous pouvez obtenir un aperçu de la façon dont beaucoup de tâches sont en attente, mais pas les tâches lui-même: http://www.rabbitmq.com/man/rabbitmqctl.1.man.html

Si ce que vous voulez inclut la tâche en cours de traitement, mais ne sont pas encore finies, vous pouvez garder une liste des tâches et vérifier leurs états:

from tasks import add
result = add.delay(4, 4)

result.ready() # True if finished

Ou vous laissez le Céleri stocker les résultats avec CELERY_RESULT_BACKEND et vérifier les tâches ne sont pas là.

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