2011-07-26 75 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