我在virtualbox下以无业游民的环境运行Ubuntu 14.04.4 LTS。在此框中,我有以下配置:


主管3.0b2
python 3.4在virtualenvironment下
芹菜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。

当我从命令行运行花时:


  vagrant @ localhost>花


它会按预期运行,并且我在浏览器中看到了任务结果,并访问了本地主机:5555。

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


  vagrant @ localhost> netstat -l | grep 5555


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


这样就可以了

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


  vagrant @ localhost> sudo超级用户启动花


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

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

最佳答案

我找到了解决方案。
问题是我不在虚拟环境下开花。我添加了一个外壳文件“ 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


现在一切都很好。

注意:我想提请您注意我使用“ exec”在shell文件中运行flower的事实:

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

10-08 01:43