2011-07-26 17 views
5

Usando celery, ¿es posible desde dentro de una tarea verificar cuándo fue la última vez que se ejecutó esa tarea?Apio: acceso al tiempo de la última ejecución de la tarea?

Me gustaría implementar "agarrar todo desde la última vez que se ejecutó". Puedo hacer un seguimiento de la última marca de tiempo de la ejecución o tener acceso al apio.

Esto es dentro de un proyecto django, si eso hace la diferencia.

Respuesta

3

De manera predeterminada, el apio no tiene un almacenamiento permanente de los resultados de la tarea; si está ejecutando en modo de compás, se ejecutará un proceso limpio para obtener resultados de tareas limpias y también información de ejecución. Want le sugiero que consiste en utilizar un NoSQL para el almacén hasta la última fecha de ejecución, se puede hacer esto mediante la anulación de su tarea el método 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) 

Este método se llama cada vez que termina la tarea, con cualquier resultado, al verificar el estado, puede almacenar su fecha solo cuando la tarea termine con ÉXITO o implemente el comportamiento que mejor se adapte a sus necesidades.

1

Si está utilizando django-apio, last_run at se guarda en el modelo. Use el ORM django normal para filtrar el modelo PeriodicTask usando su nombre de tarea.

from djcelery.models import PeriodicTask 

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

Esto funcionará solo para tareas periódicas. – navyad

Cuestiones relacionadas