14

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

我知道花是一个 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()

但是,我不确定将什么放入“应用程序”变量中。我尝试了“芹菜花--broker=redis://localhost”和“芹菜花”,但都没有奏效

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

4

2 回答 2

20

最好使用 systemd 将flower 作为守护进程运行。Supervisord 与 Python3 不兼容已成为新的最佳实践。此外,systemd 是大多数现代 Linux 发行版的标准进程管理器。

我在 Ubuntu 16.04 中使用 systemd 作为花的守护进程。尽管我相信其他发行版的设置不会有太大不同。

  1. 创建一个 systemd 配置文件,例如,flower.service. 就我而言,它位于/etc/systemd/system文件夹中。它应该包含:

    [单元]
    描述=花芹菜服务
    
    [服务]
    用户=您的用户
    组=www-数据
    工作目录=/var/www/project-working-directory
    ExecStart=/home/user/miniconda3/envs/virtualenv/bin/flower --port=5555 --loglevel=info -A yourproject
    重启=失败
    类型=简单
    
    [安装]
    WantedBy=多用户.target
    

基本上,您可以像在终端中一样设置所有可用选项。顺便说一下,你应该在虚拟环境下使用flower 。确保您的用户对工作目录具有权限。

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

  2. 启动花守护进程 sudo systemctl start flower

就这样!这个不错的教程帮助我完成了配置过程。

于 2017-10-03T16:12:13.890 回答
11

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

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

于 2012-11-27T21:09:47.090 回答