Цветок сельдерея как Daemon

Я запускаю сельдерей с бэкэндом Redis. Я хочу запустить цветок сельдерея в качестве демона на centos 6.2.

Я понимаю, что flower - это приложение Tornado, поэтому я должен использовать процесс для запуска приложения Tornado в качестве демона.

Обычно, чтобы запустить цветок, я использую эту команду:

цветок сельдерея --broker = redis: // localhost

По приведенной ниже ссылке я прочитал, что мне нужно создать скрипт python как таковой: http://www.charleshooper.net/blog/python-starting-tornado-apps-at-boot-using-upstart/ (Startflower.py)

import tornado.ioloop
import tornado.web
import tornado.httpserver 

if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(port)
    tornado.ioloop.IOLoop.instance().start()

Однако я не уверен, что добавить в переменную application. Я пробовал "цветок сельдерея --broker = redis: // localhost" и "цветок сельдерея", но ни один из них не работал.

Что мне нужно сделать, чтобы он работал как демон?


person CraigH    schedule 27.11.2012    source источник


Ответы (2)


Вы можете оставить его как программу командной строки и запускать под демоном supervisord. Это обычное решение в мире Python (хотя supervisord работает с любой командой, а не только с Python), и я использую его постоянно.

Supervisord заставляет программу думать, что она все еще работает в терминале. Есть много примеров использования supervisord, но тот, который я использую для прокси-сервера python, можно найти здесь, прокрутите вниз до" Установка прокси-сервера как услуги ".

person jeorgen    schedule 27.11.2012
comment
supervisord не работает с Python3. Любое другое решение? - person David D.; 09.03.2017
comment
@DavidD. Я использую Circus из Mozilla вместо Supervisor, работает на Python2, Python3 и Python4, хотя 4 еще не было сделано, это просто здорово. - person Meitham; 10.07.2017

Желательно запускать цветок как демон с помощью systemd. Supervisord несовместим с Python3, который стал новым передовой опыт. Более того, systemd - это стандартный диспетчер процессов для большинства современных дистрибутивов Linux.

Я использую systemd как демон для цветка в Ubuntu 16.04. Хотя я считаю, что для других дистрибутивов установка не будет сильно отличаться.

  1. Создайте файл конфигурации systemd с именем, например, flower.service. В моем случае он находится в папке /etc/systemd/system. Он должен содержать:

    [Unit]
    Description=Flower Celery Service
    
    [Service]
    User=your_user
    Group=www-data
    WorkingDirectory=/var/www/project-working-directory
    ExecStart=/home/user/miniconda3/envs/virtualenv/bin/flower --port=5555  --loglevel=info -A yourproject
    Restart=on-failure
    Type=simple
    
    [Install]
    WantedBy=multi-user.target
    

По сути, вы можете установить все доступные параметры, как в терминале. Кстати, цветок следует использовать в виртуальной среде. Убедитесь, что у вашего пользователя есть права доступа к рабочему каталогу.

  1. Перезагрузить демон systemd sudo systemctl daemon-reload

  2. Запустить цветочный демон sudo systemctl start flower

Это все! Это прекрасное руководство помогло мне пройти через процесс настройки.

person bilbohhh    schedule 03.10.2017