使用主管跑花

时间:2014-11-18 02:45:44

标签: python celery flower

我有使用主管开始花的挑战。

我的开发环境中的以下命令适用于控制台

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

使用上面的配置,没有错误,但所有芹菜都给我一个像输出的帮助。就像它没有承认传递的变量一样。

 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'

解决方案:

嗯,不是真正的解决方案,所以我没有把它作为答案。原来我的虚拟环境出了问题。所以我删除了花并使用pip3.4再次安装,因为我在python3.4

要注意的是,要花使用您的flowerconfig文件,您需要在主管的director=/path/to/your/celery_config/folder/文件中添加/etc/supervisor/conf.d/flower.conf条目,否则花会默认启动设置。

/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

感谢。

1 个答案:

答案 0 :(得分:1)

您的主管无法找到celeryapp。我的主管配置文件supervisor.conf位于不同的路径中。

您可以将directory选项传递给主管进程。所以你可以尝试

[program:flower]
directory = /opt/apps/venv/my_app/
command =  celery --app=celery_conf.celeryapp flower

这会启动一个新的花卉实例。

另请注意celery confflower conf不同。