1

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

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

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

4

1 回答 1

3

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

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
于 2013-03-28T12:16:33.483 回答