python - celery 花在主管管理下不工作

标签 python celery supervisord flower

我有 Ubuntu 14.04.4 LTS 在 vi​​rtualbox 下作为 vagrant 环境运行。在这个框中我有这样的配置:

  • 主管 3.0b2

  • 虚拟环境下python 3.4

  • celery 3.1.23

  • 花0.9.1

supervisor下的一个花配置是:

[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。

当我从命令行运行 flower 时:

vagrant@localhost> flower

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

netstat 显示监听的端口:

vagrant@localhost> netstat -l | grep 5555

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

所以,没关系。

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

vagrant@localhost> sudo supervisorctl start flower

它应该正常启动。 Netstat 显示端口 5555 已被监听。但是来自浏览器的查询只是挂起。

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

最佳答案

我找到了解决办法。 问题是我没有在我的虚拟环境下运行 flower。我添加了一个 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

它开始正常工作。

然后我这样重写了supervisor对flower的配置:

[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

关于python - celery 花在主管管理下不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39288354/

相关文章:

python - 将 ls 的输出转换为 python 列表

flask - Celery CRITICAL/MainProcess]不可恢复的错误: AttributeError ("' float' object has no attribute 'items' ",)

python - Celery 3.1 - 异步执行任务链

bash - PostgreSQL 与主管

dotcloud supervisord twistd 提前退出

python - 在 Python 的 for 循环中使用 dict.get() 方法时如何传递变量

python - 将统计数据与变量一起使用

javascript - 如何防止 django-pipeline 中 javascript 函数的名称修改

python-3.x - celery 中未处理的异常卡住了 worker

docker supervisord cron 工作不工作