django-celery PeriodicTask使用DatabaseScheduler获取上次运行时间

时间:2013-03-28 06:36:14

标签: python django celery

使用django-celery和后端djcelery.schedulers.DatabaseScheduler,我需要访问celery.task.PeriodicTask的最后一次运行时间

version 2.4的旧文档说有一个类PeriodicClassMeta,其中包含该任务的元数据,包括last_run。但是,django-celery的文档不包含模型的任何使用信息或如何设置PeriodicTasks

所以,我的问题是,如何使用PeriodicTasks后端在django-celery中设置DatabaseScheduler并访问与上次运行相关的元数据?

1 个答案:

答案 0 :(得分:2)

假设此任务仅作为定期任务运行,并且任务运行时间短于周期性任务的间隔。

from djcelery.models import PeriodicTask, TaskMeta

last_run = PeriodicTask.objects.only('last_run_at')\
                               .get(task=task_name).last_run_at
task_meta = TaskMeta.objects.filter(task_id=task_name, date_done__gte=last_run)\
                            .order_by('date_done').only('meta')[:1][0].meta