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

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

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

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

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

Я читал по ссылке ниже, что мне нужно создать python script как таковой: 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'. Я попробовал "цветок сельдерея - брокер = redis://localhost" и "цветок сельдерея", но не работал

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

Ответ 1

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

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

Ответ 2

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

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

  • Создайте файл конфигурации 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

Это все! Этот хороший учебник помог мне пройти процесс настройки.