2013-03-28 3 views
0

использованием Джанго-сельдерея, с бэкэндом djcelery.schedulers.DatabaseScheduler, мне нужно, чтобы получить доступ в последний раз запустить для celery.task.PeriodicTaskДжанго-сельдерей PeriodicTask получения последнего времени работы с использованием DatabaseScheduler

Старых документы для version 2.4 говорят, что есть класс PeriodicClassMeta который имеет метаданные для задачи, включая last_run. Однако в документах для django-celery не указаны данные об использовании для моделей или как установить PeriodicTasks.

Итак, на мой вопрос, как вы устанавливаете PeriodicTasks в django-сельдерей, используя бэкэнд DatabaseScheduler и получаете доступ к метаданным, связанным с последним запуском?

ответ

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