芹菜花在主管管理下不起作用

时间:2016-09-02 08:59:06

标签: python celery supervisord flower

我将Ubuntu 14.04.4 LTS作为虚拟机下的流浪汉环境运行。在这个框中我有这个配置:

  • 主管3.0b2

  • 在虚拟环境下的python 3.4

  • 芹菜3.1.23

  • 花0.9.1

主管下的鲜花配置是:

[program:flower]
command=/home/vagrant/.virtualenvs/meridian/bin/python /vagrant/meridian/meridian/manage.py celery flower --loglevel=INFO -conf=/vagrant/meridian/meridian/meridian/flowerconfig.py
directory=/vagrant/meridian/meridian
user=vagrant
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/flower-stdout.log
stderr_logfile=/var/log/supervisor/flower-stderr.log
priority=997
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=5

flowerconfig.py是一个空文件。所以所有值都是默认值。主机是localhost,端口是5555。

当我从命令行运行花时:

  

流浪@本地>花

它按预期运行,我在浏览器中看到任务结果,访问地址localhost:5555。

netstat向我显示了被监听的端口:

  

流浪@本地> netstat -l | grep 5555

tcp        0      0 *:5555                  *:*                     LISTEN
tcp6       0      0 [::]:5555               [::]:*                  LISTEN

所以,没关系。

当我以这种方式在主管下运行时:

  

流浪@本地> sudo supervisorctl start flower

它应该开始。 Netstat显示端口5555被监听。但是来自浏览器的查询会挂起。

为什么花不在主管的回复下?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。 问题是我在我的虚拟环境下运行了花。我添加了一个shell文件" start_flower.sh":

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
source /home/vagrant/.virtualenvs/meridian/bin/activate
workon meridian
exec flower --conf=/vagrant/meridian/meridian/meridian/flowerconfig.py

它开始有效。

然后我以这种方式重写了主管的花朵配置:

[program:flower]
command=bash -c "/vagrant/meridian/meridian/start_flower.sh"
directory=/vagrant/meridian/meridian
user=vagrant
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/flower-stdout.log
stderr_logfile=/var/log/supervisor/flower-stderr.log
priority=997
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=5
stopasgroup=true 
killasgroup=true

现在一切都很好。

注意:我想提请你注意我在shell文件中运行花" exec":

exec flower --conf=/vagrant/meridian/meridian/meridian/flowerconfig.py

我在那里使用它,因为当我使用那种结构时:

flower --conf=/vagrant/meridian/meridian/meridian/flowerconfig.py

我有一个问题 - shell文件进程终止于:

sudo supervisorctl stop flower

但是花的过程无论如何都在发挥作用!

因此,如果您遇到这类问题,请始终使用' exec'。 对于此类情况,这是一个很好的附加信息:

http://veithen.github.io/2014/11/16/sigterm-propagation.html