我正在使用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 --version
3.0.19(交叉幻灯片)python --version
2.7.3条lsb_release -a
乌班图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
不幸的是,没有什么会导致workers重新加载tasks.py模块(例如,在运行git pull
来更新文件之后)。相关fab函数的要点是可用的here。
重新启动后,代理/工人运行良好。
只是在黑暗中拍摄,用
celeryd --autoreload
选项,你确定你有一个file system notification backends选项吗?它建议使用PyNotify for linux,所以我首先要确保您已经安装了它。相关问题 更多 >
编程相关推荐