¿Cómo puedo progtwigr una tarea para que se ejecute a una hora específica usando apio?

He buscado en PeriodicTask , pero los ejemplos solo cubren el hecho de que se repita. Estoy buscando algo más parecido a la capacidad de cron para decir “ejecutar esta tarea todos los lunes a la 1 am”

¡La versión 1.0.3 recientemente lanzada soporta esto ahora, gracias a Patrick Altman!

Ejemplo:

 from celery.task.schedules import crontab from celery.decorators import periodic_task @periodic_task(run_every=crontab(hour=7, minute=30, day_of_week="mon")) def every_monday_morning(): print("This runs every Monday morning at 7:30a.m.") 

Ver el registro de cambios para más información:

http://celeryproject.org/docs/changelog.html

Utilizar

 YourTask.apply_async(args=[some, args, here], eta=when) 

Y al final de su tarea, vuelva a progtwigrlo para la próxima vez que se ejecute.

Acabo de enviar un parche para agregar una Tarea progtwigda para lograr un poco de tiempo basado en la progtwigción en función del período:

https://github.com/celery/celery/commit/e8835f1052bb45a73f9404005c666f2d2b9a9228

Cómo puede leer en este tutorial , puede hacer una tarea periódica, creo que si ha ejecutado una tarea a la 1 am. La mañana del lunes se debe a que desea ejecutar una operación larga de cpu / mem, recuerde utilizar el uso de ampq para tareas de puesta en cola.

Mientras que la respuesta de @ askol aún se mantiene, la API se ha actualizado. Para el apio 4.1.0, tengo que importar crontab y periodic_task siguiente manera:

 from celery.schedules import crontab from celery.task import periodic_task