How can I make a dashboard with all pending tasks using Celery?

Posted by e-satis on Stack Overflow See other posts from Stack Overflow or by e-satis
Published on 2010-07-28T21:01:33Z Indexed on 2010/12/27 20:54 UTC
Read the original article Hit count: 189

Filed under:
|
|

I want to have some place where I can watch all the pendings tasks.

I'm not talking about the registered functions/classes as tasks, but the actual scheduled jobs for which I could display: name, task_id, eta, worker, etc.

Using Celery 2.0.2 and djcelery, I found `inspect' in the documentation. I tried:

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  

But it hangs forever on dump = i.scheduled().

Strange, because otherwise everything works.

Using Ubuntu 10.04, django 1.0 and virtualenv.

© Stack Overflow or respective owner

Related posts about python

Related posts about django