Сельдерей: доступ ко времени последнего запуска задания? - PullRequest
5 голосов
/ 27 июля 2011

Используя сельдерей , можно ли изнутри задачи проверить, когда последний раз эта задача запускалась?

Я бы хотел реализовать "захватить все с момента последнего запуска". Я могу либо самостоятельно отслеживать метку времени последнего запуска, либо, надеюсь, получить к ней доступ из сельдерея.

Это из проекта django, если это имеет значение.

Ответы [ 2 ]

3 голосов
/ 28 июля 2011

По умолчанию у сельдерея нет постоянного хранилища результатов задачи, если вы работаете в режиме ритма, какой-то чистый процесс будет запущен для получения чистых результатов задачи, а также информации о выполнении.Если я предлагаю вам использовать 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)

Этот метод вызывается каждый раз, когда задача заканчивается, с любым результатом., проверив статус, вы можете сохранить свою дату только тогда, когда задача завершится с УСПЕХОМ или реализуете поведение, наиболее соответствующее вашим потребностям.

2 голосов
/ 14 января 2016

Если вы используете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...