有没有更方便的方法来停止(或重新启动)独立的 celerybeat 进程?

Dej*_*kic 3 systemd celery

只是为了澄清一些事情 - 我正在开发一个 systemd 服务文件celerybeat.service,它应该处理 Celery 的节拍。我现在正在做的是调用一个脚本/var/run/celery/celerybeat.pid,该脚本读取 、使用该 PID 杀死进程,然后再次启动 Celerybeat 进程。

有更好的方法来实现这一点吗?

小智 5

我们所做的就是像这样启动 celery (我们的 celery 应用程序位于 server.py 中):

python -m server --app=server multi start workername -Q queuename -c 30 --pidfile=celery.pid --beat
Run Code Online (Sandbox Code Playgroud)

它启动了一个包含 30 个工作进程的 celerybeat 进程,并将 pid 保存在 celery.pid 中。

然后我们可以调用它来干净地退出:

celery multi stop workername --pidfile=celery.pid
Run Code Online (Sandbox Code Playgroud)

  • 对于未来的 Google 员工:“celeryworker --help”的文档指出,“-B”或“--beat”选项应仅用于开发目的,并且您需要在生产环境中单独启动 celerybeat 。有关示例配置文件,请参阅[此](https://github.com/celery/celery/issues/2131)。 (7认同)