为什么Celery撤销所有计划任务并丢弃它们?

时间:2015-10-27 14:55:40

标签: python linux redis celery celerybeat

我对Celery有一个问题:从某个角度来看(Celery工作者日志没有显示根本原因),所有任务(由celerybeat每5分钟安排一次)被工人撤销并丢弃。

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

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

你知道这个问题的原因是什么吗?如果您需要更多信息,请不要犹豫!

1 个答案:

答案 0 :(得分: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
        }
    }

我的坏:)