gpt4 book ai didi

python - 如何使用 Celery 守护进程自动重新加载任务模块?

转载 作者:太空狗 更新时间:2023-10-29 17:20:51 39 4
gpt4 key购买 nike

我正在使用 Fabric 部署一个 Celery 代理(运行 RabbitMQ)和多个 Celery worker,其中 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

celeryconfig.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 (Chiastic Slide)
  • python --version 2.7.3
  • lsb_release -a Ubuntu 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 celery | grep -v grep | awk '{print $2}' | xargs kill -HUP

不幸的是,没有任何事情会导致工作人员重新加载 tasks.py 模块(例如,在运行 git pull 以更新文件之后)。 相关工厂功能的要点可用here .

经纪人/ worker 在重启后运行良好。

最佳答案

只是在黑暗中拍摄,使用 celeryd --autoreload 选项,您是否确保拥有 file system notification backends 之一? ?它推荐适用于 Linux 的 PyNotify,因此我首先要确保您已安装它。

关于python - 如何使用 Celery 守护进程自动重新加载任务模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16929264/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com