0

我们正在运行一个带有 Celery worker 的 Django 站点以及用于 cron 作业的celery beat 。有时我们会有一个流氓芹菜节拍进程,当主管重新启动或主管中的工作重新启动时会继续运行(我不确定它何时发生)。基本上,我们最终会运行两个 celery beat 进程来复制这些任务。这是一个问题,因为一项任务会发送提醒电子邮件,而当这种情况发生时,我们的很多用户都会收到重复的电子邮件。

有没有人对芹菜节拍和主管有类似的经验。有没有办法检查一个且只有一个 celery beat 进程是否一直在运行?

4

1 回答 1

0

也许有一个更好的答案,但这是我迄今为止想出的......

我认为流氓过程发生在我们重新启动主管的部署期间。我已经离开了:

fab.sudo('supervisorctl restart all')

对此:

fab.sudo('supervisorctl stop all')
with fab.settings(warn_only=True):
    fab.run("ps auxww | grep 'celery' | awk '{print $2}' | xargs kill -9")
fab.sudo('supervisorctl start all')

这似乎有效,但我不确定这是否是最可靠的解决方案。

于 2014-05-05T17:32:07.527 回答