首页 文章

芹菜autoreload无法正常工作

提问于
浏览
9

我正在使用Celery 3.1.16经纪人(运行RabbitMQ)和多名芹菜 Worker 与celeryd通过主管守护 . 问题在于任务更新 . 当我更新我的tasks.py文件时,芹菜工作者运行旧代码 .

芹菜发射命令:

/home/my_project/bin/celery -B --autoreload --app=my_app.celery:app worker --loglevel=INFO

我在django settings.py中包含任务文件:

CELERY_IMPORTS = [
    'my_app.tasks'
]

pyinotify 安装并运行(我猜是这样),芹菜日志的一部分:

[2014-12-16 20:56:00,016: INFO/MainProcess] Task my_app.tasks.periodic_update_task_statistic[175c2557-7c07-43c3-ac70-f4e115344134] succeeded in 0.00816309102811s: 'ok!'
[2014-12-16 20:56:11,157: INFO/MainProcess] Detected modified modules: ['my_app.tasks']
[2014-12-16 20:57:00,001: INFO/Beat] Scheduler: Sending due task my_app.tasks.periodic_update_task_statistic (my_app.tasks.periodic_update_task_statistic)
[2014-12-16 20:57:00,007: INFO/MainProcess] Received task: my_app.tasks.periodic_update_task_statistic[f22998a9-dcb4-4c29-8086-86dd6e57eae1]

所以,我的问题: how to get celery update and apply new tasks code, if they were modified?

3 回答

  • 1

    我有着同样的问题 . 虽然我不喜欢它,但我会执行以下操作,首先在当前目录下的任何位置删除并编译.pyc文件,然后重新启动所有工作程序 . find . -name "*.pyc" -exec rm {} \; supervisorctl restart all 似乎很奇怪, --autoreload 标志什么也没做,但在我的情况下并不是这样 .

  • 1

    Celery只对那些直接加载的模块进行自动加载,它不会关注直接模块加载的其他模块 .

  • 1

    Celery有这个问题的公开问题https://github.com/celery/celery/issues/1025

相关问题