tasks periodic celery_result_backend beat_schedule beat autodiscover_tasks app add_periodic_task python django scheduled-tasks celery

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:

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



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