芹菜:访问上次运行任务的时间?

时间:2011-07-26 22:59:46

标签: python django celery

使用celery,是否可以在任务中检查上次运行该任务的时间是什么?

我想实施“自上次运行以来抓住所有内容”。我可以自己跟踪上次运行时间戳,也可以从芹菜中获取它。

这是来自django项目,如果这会产生影响。

2 个答案:

答案 0 :(得分:3)

默认情况下,celery没有任务结果的永久存储空间,如果您在节拍模式下运行,一些干净的进程将运行干净的任务结果以及执行信息。 我希望你建议你在每个最后执行日期使用NoSQL存储,你可以通过在任务中覆盖after_return

方法来实现
def after_return(self, status, retval, task_id, args, kwargs, einfo):
    #exit point for context managers
    self.taskLogger.__exit__(status, retval, task_id, args, kwargs, einfo)

每次任务结束时调用此方法,任何结果,只有当任务完成SUCCESS或实现最符合您需求的行为时,才能检查状态,即可存储日期。

答案 1 :(得分:1)

如果您使用的是django-celery,则last_run at将保存在模型中。使用普通的django ORM使用您的任务名称过滤PeriodicTask模型。

from djcelery.models import PeriodicTask

last_run = PeriodicTask.objects.only('last_run_at').get(task='TASK_NAME_HERE').last_run_at