2011-07-26 37 views
5

使用celery,是否有可能从任务内检查上次执行任务的时间是?芹菜:获取上次运行任务的时间?

我想实施“抓住你上次运行以来的一切”。我可以自己跟踪最后一次运行时间戳,或者希望能够从芹菜进入。

这是从一个django项目,如果这有所作为。

回答

3

默认情况下,芹菜不会永久存储任务结果,如果您在节拍模式下运行,某些干净的进程将运行干净的任务结果以及执行信息。 想我建议你是使用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) 

这种方法被称为每次任务结束时,有任何结果,通过检查你的日期状态,只有在任务完成后才能存储你的日期,或者实现最符合你需要的行为。

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 
+0

这只适用于定期任务。 – navyad