如何使用芹菜守护进程自动重新加载任务模块?

2024-05-11 23:53:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Fabric部署一个芹菜代理(运行RabbitMQ)和多个芹菜工作者,通过supervisor对其进行守护。我一辈子都想不出如何重新加载tasks.py模块,除非重新启动服务器。


/etc/supervisor/conf.d/celleryd.conf

[program:celeryd]
directory=/fab-mrv/celeryd
environment=[RABBITMQ crendentials here]
command=xvfb-run celeryd --loglevel=INFO --autoreload
autostart=true
autorestart=true

芹菜配置.py

import os

## Broker settings
BROKER_URL = "amqp://%s:%s@hostname" % (os.environ["RMQU"], os.environ["RMQP"])

# List of modules to import when celery starts.
CELERY_IMPORTS = ("tasks", )

## Using the database to store task state and results.
CELERY_RESULT_BACKEND = "amqp"

CELERYD_POOL_RESTARTS = True

附加信息

  • celery --version3.0.19(交叉幻灯片)
  • python --version2.7.3条
  • lsb_release -a乌班图12.04.2 LTS
  • rabbitmqctl status。。。2.7.1。。。

以下是我尝试过的一些事情:

  • celeryd --autoreload标志
  • sudo supervisorctl restart celeryd
  • celery.control.broadcast('pool_restart', arguments={'reload': True})
  • ps auxww | grep celeryd | grep -v grep | awk '{print $2}' | xargs kill -HUP

不幸的是,没有什么会导致workers重新加载tasks.py模块(例如,在运行git pull来更新文件之后)。相关fab函数的要点是可用的here

重新启动后,代理/工人运行良好。


Tags: 模块pytrue代理hereosconfgrep