2010-07-28 10 views
9

Je veux avoir un endroit où je peux regarder toutes les tâches de pendules.Comment puis-je créer un tableau de bord avec toutes les tâches en attente utilisant Celery?

Je ne parle pas des fonctions enregistrées/classes comme tâches, mais les emplois réels prévue pour le que je pouvais afficher: nom, task_id, eta, travailleur, etc.

Utilisation Céleri 2.0.2 et djcelery , J'ai trouvé `inspecter 'dans la documentation. J'ai essayé:

from celery.task.control import inspect 

def get_scheduled_tasks(nodes=None): 

    if nodes: 
     i = inspect(nodes) 
    else: 
     i = inspect() 

    scheduled_tasks = [] 
    dump = i.scheduled() 
    if dump: 
     for worker, tasks in dump: 
       for task in tasks: 
        scheduled_task = {} 
        scheduled_task.update(task["request"]) 
        del task["request"] 
        scheduled_task.update(task) 
        scheduled_task["worker"] = worker 
        scheduled_tasks.append(scheduled_task) 

    return scheduled_tasks 

Mais il se bloque toujours sur dump = i.scheduled().

Étrange, car sinon tout fonctionne. Utilisation de Ubuntu 10.04, django 1.0 et virtualenv.

Répondre

4

Jetez un oeil à celerymon qui exécute un serveur Web qui montre toutes les tâches planifiées. Vous devrez exécuter le céleri avec l'indicateur -E pour activer les événements, qui seront placés dans votre file d'attente et retirés par le démon celerymon.

0

Essayez l'outil de contrôle Fleur - Céleri.
Ceci fournit un tableau de bord très utile pour surveiller les tâches en file d'attente.

Flower - Celery monitoring tool

Questions connexes