【问题标题】:Running Flower using Supervisor使用 Supervisor 运行 Flower
【发布时间】:2014-11-18 02:45:43
【问题描述】:

我正在挑战使用主管开始开花。

我的开发环境中的以下命令在控制台上运行

celery --app=celery_conf.celeryapp flower --conf=flowerconfig

但是转移到生产环境使用 supervisor 却遇到了各种各样的错误

/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_beatconfiguration 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 再次安装

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

/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

谢谢。

【问题讨论】:

    标签: python celery flower


    【解决方案1】:

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

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

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

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

    还要注意celery confflower conf 是不同的。

    【讨论】:

    • 看起来您在我编辑问题时已回答。我想我解决了路径错误。现在得到的只是 help like 来自 celery 的新配置输出。请注意,我有两个目录 opt/apps/venv/my_app 是应用程序的虚拟环境,还有 /opt/apps/my_app 这是应用程序所在的位置..
    • 您的命令在命令行上是否正常工作?你的flowerconfig中有什么?
    • 是的,它工作正常。 Flowerconfig 有基本的设置。我已将设置添加到问题中..
    • 原来虚拟环境安装有问题。我已经发布了最终的工作配置文件
    • 在哪里可以找到flowerconfig.py 文件?
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2015-01-13
    相关资源
    最近更新 更多