2015-09-23 3 views
-1

Существует кластер с различными машинами, и каждый из них имеет код proj по указанному пути (~/celery_node/). В начале в скоплении нет работающего сельдерея.Как начать/перезапустить работников удаленно в сельдерее?

Вопрос №1: Как я могу начать работу с сельдереем на каждой машине без входа в какой-либо из них или просто войти в один и начать работу с сельдереем на других машинах?

Вопрос №2: Если в каждой машине уже есть работники сельдерея, как я могу перезапустить их, не заходя в удаленном режиме?

ответ

0

вы можете использовать fabric для выполнения удаленных операций

from fabric.api import run 

def host_type(): 
    run('service celery start') 

После того, как задача определена, она может быть запущена на одном или нескольких серверах, например, так:

$ fab -H localhost,linuxbox restart celery 
[localhost] run: service celery start 
[localhost] out: celery started/running 
[linuxbox] run: service celery start 
[linuxbox] out: celery started/running 

Done. 
Disconnecting from localhost... done. 
Disconnecting from linuxbox... done. 
+0

Спасибо за вашу модификацию и ответ. Fabric - это инструмент командной строки для удаленных операций с SSH, но я хочу знать, есть ли некоторые решения, связанные с самим сельдереем. –

+0

одним словом .. нет. – scytale

0

Посмотрите на цветок https://github.com/mher/flower Это позволяет использовать такие виды управления типа

+0

Спасибо за ваш ответ. Я изучал цветок раньше, но это неправильное решение. Во-первых, мы не можем запустить работника из цветка, который просто контролирует начатые. Во-вторых, на основе пульта дистанционного управления (широковещательной передачи) он может перезапустить ** рабочий пул **, но не перезапустить самих рабочих. В-третьих, когда я начинаю работать с командой 'celery -A proj worker -l info' локально, цветок просто имеет возможность контролировать, но даже не ** выключает ** его. –

0

дополнительно autoreload флага:

Начиная сельдерей работник с опцией --autoreload позволит работнику следить за изменения файловой системы для всех модулей импортированы задачами ввезенных (а также любые модули без задачи, добавленные в CELERY_IMPORTS установки или - I | --include).

Это экспериментальная функция, предназначенная для использования только в разработке, использование автоматической перезагрузки в производстве не рекомендуется, так как поведение перезагрузки модуля в Python не определено и может затруднить диагностику ошибок и сбоев. Сельдерей использует тот же подход, что и автоперегрузчик, найденный, например. команда запуска сервера Django.

Смежные вопросы