【问题标题】:Why does Celery revoke all scheduled tasks and discard them?为什么 Celery 会撤销所有计划任务并丢弃它们?
【发布时间】:2016-01-27 01:25:41
【问题描述】:

我对 Celery 有疑问:从某个时间点(Celery 工人日志未显示根本原因),所有任务(由 celerybeat 每 5 分钟安排一次)都被工人撤销和丢弃。

在 celerybeat 和 celeryd(工人)的日志中没有任何线索可以说明为什么会发生这种情况。我注意到从某个点开始,有 1 / 50 个任务被撤销,被撤销任务的频率不断上升,直到 24 小时后所有任务都被系统地撤销。

我使用 Redis 作为代理,问题出现在 Celery 的 Linux 部署上。

您知道问题的原因可能是什么吗?如果您需要更多信息,请随时询问!

【问题讨论】:

  • 日志中的一些 sn-ps?
  • 在仔细查看日志准备日志 sn-p 后,我找到了 Celery 任务被撤销的原因。答案见下文。

标签: python linux redis celery celerybeat


【解决方案1】:

在查看日志中的任务 UUID 后,我弄清楚了发生了什么:

[2015-10-27 05:27:45,879: INFO/MainProcess] Received task: hidden_task_name[29e47148-8865-4d46-a7ef-f8a0d625fe05] expires:[2015-10-27 05:57:45.870869+00:00]
[2015-10-27 06:28:23,696: INFO/MainProcess] Discarding revoked task: hidden_task_name[29e47148-8865-4d46-a7ef-f8a0d625fe05]

由于我使用 CELERYBEAT_SCHEDULE 设置的任务到期日期,这些任务被丢弃:

CELERYBEAT_SCHEDULE['---'] = {
        'task': ...,
        'schedule': ...,
        'args': (),
        'options': {
            # Do not run the task if it starts 30 minutes after it is
            # scheduled. This is useful if the Celery workers go down,
            # celerybeat will keep adding tasks to the queue.
            'expires': 1800
        }
    }

我的错:)

【讨论】:

    猜你喜欢
    • 2012-12-28
    • 1970-01-01
    • 2018-02-11
    • 2023-03-25
    • 1970-01-01
    • 2011-07-18
    • 2015-04-21
    • 2021-08-14
    • 2017-09-22
    相关资源
    最近更新 更多