我正在挑战使用主管指导的鲜花。
我的开发环境中的以下命令可在控制台上使用celery --app=celery_conf.celeryapp flower --conf=flowerconfig
但是转投生产使用主管会遇到各种各样的错误
/supervisor/conf.d/flower.conf
[program:flower]
command=/opt/apps/venv/my_app/bin/celery flower --app=celery_conf.celeryapp --conf=flowerconfig
directory=/opt/apps/my_app
user=www-data
autostart=true
autorestart=false
redirect_stderr=true
stderr_logfile=/var/log/celery/flower.err.log
stdout_logfile=/var/log/celery/flower.out.log
使用上面的配置,没有错误,但是所有celery所做的就是像输出一样为我提供帮助。就像它不承认传递的变量一样。
Type 'celery <command> --help' for help using a specific command.
Usage: celery <command> [options]
Show help screen and exit.
Options:
-A APP, --app=APP app instance to use (e.g. module.attr_name)
-b BROKER, --broker=BROKER
url to broker. default is 'amqp://guest@localhost//'
--loader=LOADER name of custom loader class to use.
etc..
etc..
etc...
另一方面,主管抛出
INFO exited: flower (exit status 64; not expected)
我还有其他主管使用
celery_beat
和configuration file samples on github启动的应用程序,并且它们与上述相同的目录路径都可以正常工作flowerconfig如下:
flowerconfig.py
# Broker settings
BROKER_URL = 'amqp://guest:guest@localhost:5672//'
# RabbitMQ management api
broker_api = 'http://guest:guest@localhost:15672/api/'
#Port
port = 5555
# Enable debug logging
logging = 'INFO'
解决方案:
好吧,这不是真正的解决方案,因此我没有将其作为答案。原来我的虚拟环境有问题。所以我删除了花并在python3.4上再次使用pip3.4进行了安装
不过要注意的是,要让flower使用您的
flowerconfig
文件,您需要在主管的director=/path/to/your/celery_config/folder/
文件中添加/etc/supervisor/conf.d/flower.conf
条目,否则flower将以默认设置启动。/etc/supervisor/conf.d/flower.conf
; ==================================
; Flower: For monitoring Celery
; ==================================
[program:flower]
command=/opt/apps/venv/my_app/bin/celery flower --app=celery_conf.celeryapp --conf=flowerconfig
directory=/opt/apps/my_app/celery_conf #this is key as my configuration file was in the `celery_conf` folder
user=www-data
autostart=true
autorestart=false
redirect_stderr=true
stderr_logfile=/var/log/celery/flower.err.log
stdout_logfile=/var/log/celery/flower.out.log
谢谢。
最佳答案
您的主管无法找到celeryapp
。我是您的主管配置文件supervisor.conf
位于不同的路径。
您可以将directory
选项传递给主管进程。所以你可以尝试
[program:flower]
directory = /opt/apps/venv/my_app/
command = celery --app=celery_conf.celeryapp flower
这将启动一个新的花实例。
还要注意celery conf和flower conf是不同的。