使用django-celery和后端djcelery.schedulers.DatabaseScheduler
,我需要访问celery.task.PeriodicTask
的最后一次运行时间
version 2.4的旧文档说有一个类PeriodicClassMeta
,其中包含该任务的元数据,包括last_run
。但是,django-celery
的文档不包含模型的任何使用信息或如何设置PeriodicTasks
。
所以,我的问题是,如何使用PeriodicTasks
后端在django-celery中设置DatabaseScheduler
并访问与上次运行相关的元数据?
答案 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