2016-03-28 6 views
5

Я только что установил Сельдерей, и я хочу создать простую страницу состояния, показывающую текущее количество работников и их статус.Сельдерей/Django - Как программно видеть состояния работников

Возможно ли это? Из веб-поиска лучшее, что я нашел, было celery.current_app.control.inspect()

Но, насколько я могу судить, в нем ничего не говорится о работниках. (Я использую Kombu с SQS для бэкэнд, если это имеет значение)

+0

Почему бы не использовать https://github.com/mher/flower? Даже официальные документы Celery рекомендуют его (http://docs.celeryproject.org/en/latest/userguide/monitoring.html?highlight=flower#flower-real-time-celery-web-monitor). –

+0

Цветок выглядит красиво, но для моих морских свиней мне нужно подключить его к внутренней проверке работоспособности системы. Поэтому мне нужно сделать это программно. – Greg

+1

Затем вам нужно увеличить цветок. – TheGreenGoblen

ответ

7

В the documentation of celery workers объясняется вывод команд inspect.

По умолчанию с помощью celery.current_app.control.inspect() возвращается «объект-инспектор», который позволяет вам запрашивать состояние всех работающих сотрудников. Например, если вы выполняете этот код с двух текущих рабочих названных «сумматор» и «спящий»:

i = celery.current_app.control.inspect() 
    i.registered() 

вызов i.registered() может вернуть что-то вроде:

{ 
     'adde[email protected]': ['tasks.add'], 
     '[email protected]': ['tasks.sleeptask'], 
    } 

В заключение отметим, что «инспектор» методы registered, active, scheduled и т. д. возвращают словарь с результатами, классифицированными рабочими, выбранными при вызове celery.current_app.control.inspect() (если ни один из работников не передан в качестве аргументов, все работники неявно выбраны).

+0

Это выглядит многообещающим. Странно, однако, когда я называю это, я получаю ошибку проверки подлинности SQS. Несмотря на то, что мое приложение и сотрудники могут подключиться хорошо. Может быть, для этого вызова требуется дополнительное разрешение на очередь SQS? – Greg

+0

Вот эта ошибка: SQSError: SQSError: 403 Forbidden ОтправительAccessDenied Доступ к ресурсу https://queue.amazonaws.com/ отклонен. 37b59c-е-е-aa5c-faeb0ecba29f Greg

+0

Кажется, что оно не может быть еще поддерживается: [SQS еще не поддерживает команды работника дистанционного управления] (http://docs.celeryproject.org/en /latest/getting-started/brokers/sqs.html#caveats). –