为什么Celery会撤销并丢弃所有已计划的任务?

4
我有一个关于Celery的问题:从某一点开始(Celery工作程序日志没有显示根本原因),所有任务(由celerybeat每5分钟调度)都被工作程序撤销并丢弃了。
在celerybeat和celeryd(工作程序)的日志中没有任何线索,可以说明为什么会发生这种情况。我注意到,从某一点开始,1/50的任务被撤销,撤销任务的频率不断上升,直到24小时后所有任务都被系统地撤销。
我使用Redis作为代理,在Linux上部署了Celery时出现问题。
您知道可能是什么原因造成了这个问题吗?如果您需要更多信息,请不要犹豫问!

一些日志片段? - scytale
经过仔细查看日志以准备日志片段,我已经找到了Celery任务被撤销的原因。请参见以下答案。 - GDICommander
1个回答

4

从日志中查看任务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
        }
    }

抱歉我的错 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接