我正在使用 Fabric 部署一个 Celery 代理(运行 RabbitMQ)和多个celeryd
通过supervisor
. 我一生都无法弄清楚如何在不重新tasks.py
启动服务器的情况下重新加载模块。
/etc/supervisor/conf.d/celeryd.conf
[program:celeryd]
directory=/fab-mrv/celeryd
environment=[RABBITMQ crendentials here]
command=xvfb-run celeryd --loglevel=INFO --autoreload
autostart=true
autorestart=true
芹菜配置文件
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 --version
3.0.19(Chiastic Slide)python --version
2.7.3lsb_release -a
Ubuntu 12.04.2 LTSrabbitmqctl 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
不幸的是,没有什么会导致工作人员重新加载 tasks.py 模块(例如,在运行git pull
更新文件之后)。 相关晶圆厂功能的要点可在此处获得。
重新启动后,经纪人/工人运行良好。