Выполнение задачи в определенное время django
Я сейчас пишу свое собственное приложение для задач с использованием Django и хотел бы, чтобы несколько определенных функций выполнялись каждый день в определенное время (обновление задач, проверка сроков выполнения и т.д.). Есть ли способ заставить Django выполнять функции на регулярной основе или как мне вообще это сделать?
Имеет ли смысл писать для этого дополнительную программу с бесконечным циклом или есть лучшие способы?
Хорошим вариантом здесь является сельдерей:
-
app.conf.beat_schedule = { 'add-every-30-seconds': { 'task': 'tasks.add', 'schedule': 30.0, 'args': (16, 16) }, } app.conf.timezone = 'UTC'
С помощью celery вы можете определять периодические задачи с любым заданным интервалом. Рабочие celery будут подхватывать эти задачи, когда это необходимо. Для поддержки работников celery вам потребуется что-то вроде RabbitMQ или Redis.
Альтернативный, более простой способ - добавить в urls.py запись, отлавливающую любой url, который вы не используете, и использовать ее как подсказку для проверки базы данных на предмет выполнения другого задания. Это позволяет использовать тот факт, что на ваш сайт будет приходить много ботов. Время выполнения не совсем надежно, но это не требует дополнительной настройки.
вы можете использовать django-cronjobs или, возможно, запланировать работу с помощью библиотеки schedule.