芹菜:访问任务最后运行的时间



使用芹菜,是否可以从任务内检查该任务最后一次运行的时间?

我想实现"抓取上次运行后的所有内容"。我既可以自己跟踪最后一次运行的时间戳,也可以从芹菜中访问它。

默认情况下,芹菜没有任务结果的永久存储,如果您在beat模式下运行,一些干净的进程将运行干净的任务结果和执行信息。我建议你使用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完成或实现最适合您需要的行为时存储日期。

如果你使用的是django-芹菜,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

在最新版本的芹菜(5.1.2)中,可以通过此代码获得任务的最后运行时间。

#tasks.py
from django_celery_beat.models import PeriodicTask
@shared_task(bind=True)
def backup_everyday(self)   
    try:
        last_run = PeriodicTask.objects.get(task=self.name).last_run_at
    except:
        last_run = None

backup everyday只是一个示例函数。PeriodicTask模型有一个名为"last_run_at"的属性。

相关内容

  • 没有找到相关文章

最新更新