Цветок сельдерея как демона
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
В принципе, вы можете установить все доступные параметры, например, в терминале. Кстати, вы должны использовать цветок под виртуальной средой. Убедитесь, что у пользователя есть привилегии в рабочем каталоге.
-
Перезагрузите демона systemd
sudo systemctl daemon-reload
-
Запуск цветочного демона
sudo systemctl start flower
Это все! Этот хороший учебник помог мне пройти процесс настройки.