Necesito crear una aplicación en Django que le permita al usuario realizar alguna tarea todos los días en el momento que especifique en el tiempo de ejecución.
He buscado en Celery pero no pude encontrar nada que ayude. Encontré apply_async y puedo hacer que la tarea se ejecute una vez en la duración especificada pero no recurrente. Me falta algo pero no se que.
Por favor sugiera cómo puedo lograr esto.
Advanced Python Scheduler podría ser una solución para usted.
https://github.com/agronholm/apscheduler
https://apscheduler.readthedocs.io/en/latest/
APScheduler puede agregar trabajos dinámicamente.
Puedes mirar mi ejemplo de github: https://github.com/easytrader/Apscheduler_for_django/blob/master/trips/views.py
Hay un paquete django-celery-beat que le permite agregar dinámicamente tareas a la base de datos y luego se ejecutan como lo definió en la base de datos (por ejemplo, cada 5 minutos). Pero actualmente tienen un error que hace que la tarea no se agregue a la cola de apio cuando añadido a la base de datos. Una solución sugerida es reiniciar el proceso de apio cada vez que se agrega una nueva tarea.
Lo resolví con el paquete de schedule de Dan Baders. Programé una tarea en cada minuto que verifica la base de datos en busca de tareas que deben ejecutarse en el minuto actual. Luego empiezo cada una de estas tareas en un nuevo hilo.
Espero que esto ayude.
Una solución simple que evitará el uso de una pila AMQP pesada, lo que evitará dependencias externas como Celery . Una cosa que puede hacer es escribir un comando de administración personalizado .
python manage.py my_daily_cmdSi está usando Windows, use cron , si está usando Windows, use at o schtasks.exe ,
con cron/at/schtasks.exe, puede ejecutar my_daily_cmd en el momento que desee.