2011-07-26 24 views
5

Korzystanie z celery, czy jest możliwe w ramach zadania sprawdzenie, kiedy ostatnio wykonano zadanie?Seler: dostęp do czasu ostatniego uruchomienia zadania?

Chciałbym zaimplementować "zgarnij wszystko od czasu ostatniego uruchomienia". Mogę samodzielnie śledzić sygnaturę czasową ostatniego uruchomienia lub mieć dostęp do niej od selera.

To jest z wewnątrz projektu django, jeśli to robi różnicę.

Odpowiedz

3

Domyślnie seler nie ma trwałego miejsca przechowywania wyników zadania, jeśli pracujesz w trybie bitowym, zostanie przeprowadzony czysty proces w celu uzyskania czystych wyników zadania oraz informacji o wykonaniu. Chcesz Proponuję jest użycie NoSQL do sklepu każdą ostatnią datę wykonania, można to zrobić poprzez override w zadaniu metody 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) 

Ta metoda jest wywoływana za każdym razem, gdy zadanie się kończy, z każdego wyniku, sprawdź stan, w którym możesz zapisać swoją datę tylko wtedy, gdy zadanie zakończy się SUCCESS lub zaimplementuj zachowanie, które najlepiej pasuje do twoich potrzeb.

1

Jeśli używasz django-celery, last_run na jest zapisany w modelu. Użyj normalnego ORM django do filtrowania modelu PeriodicTask przy użyciu nazwy zadania.

from djcelery.models import PeriodicTask 

last_run = PeriodicTask.objects.only('last_run_at').get(task='TASK_NAME_HERE').last_run_at 
+0

będzie to działać tylko w przypadku zadań okresowych. – navyad

Powiązane problemy