我正在运行带有redis后端的芹菜。我想在centos6.2上运行芹菜花作为守护进程。
我知道花是一个龙卷风应用程序,所以我应该使用一个进程来运行龙卷风应用程序作为一个deamon。
通常启动花我使用这个命令:
芹菜花--经纪人=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"one_answers"芹菜花",但都不起的作用
我需要做些什么才能让它作为守护进程工作??
最好使用systemd作为守护进程运行flower。Supervisord与Python3不兼容,后者已成为一种新的最佳实践。此外,systemd是大多数现代Linux发行版的标准进程管理器。
我在Ubuntu 16.04中使用systemd作为flower的守护进程。尽管我相信其他发行版的设置不会有太大不同。
-
创建一个名为
flower.service
的systemd配置文件。在我的情况下,它位于/etc/systemd/system
文件夹中。它应该包含:[单位]描述=花芹菜服务【服务】用户=您的用户组=www数据WorkingDirectory=/var/www/project工作目录ExecStart=/home/user/miniconda3/envs/virtualenv/bin/flower--port=55555-loglevel=info-您的项目重新启动=失败类型=简单[安装]WantedBy=多用户.target
基本上,您可以像在终端中一样设置所有可用选项。顺便说一下,你应该在虚拟环境下使用花。请确保您的用户对工作目录具有权限。
-
重新加载systemd守护程序
sudo systemctl daemon-reload
-
启动花守护程序
sudo systemctl start flower
仅此而已!这个不错的教程帮助我完成了配置过程。
您可以将其保留为命令行程序,并在supervisord守护进程下运行。这是python世界中常见的解决方案(尽管supervisord可以使用任何命令,而不仅仅是python),我一直在使用它。
Supervisord使程序认为它仍在终端中运行。有很多如何使用supervisord的例子,但我在python代理服务器中使用的一个例子可以在这里找到,向下滚动到"将代理服务器作为服务安装"。