views:

46

answers:

0

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.