芹菜花作为守护进程

时间:2012-11-27 07:06:38

标签: celery tornado flower

我用redis后端运行芹菜。 我想在ceos 6.2上运行芹菜花作为守护进程。

我知道flower是一个Tornado应用程序,因此我应该使用一个进程来运行龙卷风应用程序作为守护程序。

通常开始开花我使用这个命令:

  

芹菜花 - 经纪人= 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'变量中。我试过'芹菜花 - 经纪人= redis:// localhost'和'芹菜花',但都没有工作

我需要做些什么才能让它作为守护进程工作?

2 个答案:

答案 0 :(得分:11)

您可以保留它作为命令行程序并在supervisord守护程序下运行它。这是python世界中的常见解决方案(虽然supervisord可以使用任何命令,而不仅仅是python),并且我一直使用它。

Supervisord让程序认为它仍在终端中运行。有很多例子如何使用supervisord,但我可以找到一个用于python代理服务器的here,向下滚动到“将代理服务器安装为服务”。

答案 1 :(得分:9)

最好使用systemd将花作为守护进程运行。 Supervisord与已成为新best practice的Python3不兼容。而且,对于大多数现代Linux发行版,systemd是standard process manager

我在Ubuntu 16.04中使用systemd作为花的守护进程。虽然我相信这个设置对其他发行版来说会有很大的不同。

  1. 创建一个名为flower.service的systemd配置文件。就我而言,它位于/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
    
  2. 基本上,您可以设置终端中的所有可用选项。顺便说一下,你应该在virtual environment下使用花。确保您的用户拥有工作目录的权限。

    1. 重新加载systemd守护程序 sudo systemctl daemon-reload

    2. 启动一个花后卫 sudo systemctl start flower

    3. 这就是全部! This漂亮的教程帮助我完成了配置过程。