我对Celery有一个问题:从某个角度来看(Celery工作者日志没有显示根本原因),所有任务(由celerybeat每5分钟安排一次)被工人撤销并丢弃。
celerybeat和celeryd(工人)的日志中没有任何线索可以说明为什么会发生这种情况。我注意到,从某一点开始,1/50任务被撤销,撤销任务的频率持续上升,直到所有任务在24小时后被系统撤销。
我使用Redis作为代理,问题发生在Celery的Linux部署上。
你知道这个问题的原因是什么吗?如果您需要更多信息,请不要犹豫!
答案 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
}
}
我的坏:)