Как я могу сделать панель инструментов со всеми незавершенными задачами, используя Celery? - PullRequest
9 голосов
/ 29 июля 2010

Я хочу, чтобы у меня было какое-то место, где я мог бы наблюдать за всеми отложенными задачами.

Я говорю не о зарегистрированных функциях / классах как задачах, а о реальных запланированных заданиях, для которых я мог бы отображать: name, task_id, eta, worker и т. д.

Используя Celery 2.0.2 и djcelery, я нашел `inspect 'в документации.Я попробовал:

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  

Но он навсегда зависает на dump = i.scheduled().

Странно, потому что в остальном все работает.

Использование Ubuntu 10.04, django 1.0 и virtualenv.

Ответы [ 2 ]

4 голосов
/ 27 декабря 2010

Взгляните на celerymon , на котором работает веб-сервер, отображающий все запланированные задачи. Вам нужно запустить сельдерей с флагом -E, чтобы включить события, которые помещаются в вашу очередь и выполняются демоном celerymon.

0 голосов
/ 30 марта 2016

Попробуйте Flower - Инструмент для мониторинга сельдерея.
Это обеспечивает действительно полезную панель мониторинга для задач в очереди.

Цветок - Инструмент мониторинга сельдерея

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...