python - periodic - ¿Cómo puedo programar una tarea para que se ejecute en un momento específico usando apio?
django celery (5)
Utilizar
YourTask.apply_async(args=[some, args, here], eta=when)
Y al final de su tarea, vuelva a programarla para la próxima vez que se ejecute.
He investigado PeriodicTask
, pero los ejemplos solo cubren la repetición. Estoy buscando algo más como la habilidad de cron
para decir "ejecuta esta tarea todos los lunes a la 1 a.m."
¡La versión 1.0.3 recientemente lanzada es compatible con 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:
Acabo de enviar un parche para agregar un ScheduledTask para lograr un poco de programación basada en el tiempo en función del período:
https://github.com/celery/celery/commit/e8835f1052bb45a73f9404005c666f2d2b9a9228
Como puede leer en este tutorial , puede hacer un PeriodicTask, 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 de CPU / memoria larga, recordar el uso del apio para realizar tareas en cola.
Si bien la respuesta de @ asksol aún se cumple, la API ha sido actualizada. Para apio 4.1.0, debo importar crontab
y periodic_task
siguiente manera:
from celery.schedules import crontab
from celery.task import periodic_task