【问题标题】:Rogue CeleyBeat processRogue CeleyBeat 流程
【发布时间】:2014-06-11 04:31:14
【问题描述】:

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

有没有人在 celery beat 和主管方面有类似的经验。有没有办法检查一个且只有一个 celery beat 进程是否始终在运行?

【问题讨论】:

标签: django celery supervisord celerybeat


【解决方案1】:

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

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

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')

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多