Одним из простых и распространенных решений является создание пользовательской команды администратора Django и использование Cron для запуска ее через указанные интервалы. Вы можете написать код команды по своему вкусу, и он может иметь доступ ко всем моделям, настройкам и другим частям вашего проекта Django.
Вы поместили бы свой код, делая запрос и записывая данные в БД, используя ваши модели Django, в новый метод handle()
класса Command
(очевидно, что параметр request
больше не нужен). И затем, если, например, вы назвали свою команду update_some_data
, вы можете запустить ее как python manage.py update_some_data
.
Предполагается, что Cron существует и работает на машине. Затем вы можете настроить Cron для запуска этой команды через определенные промежутки времени, например, создать файл /etc/cron.d/your_app_name
и поместить
0 4 * * * www-data /usr/local/bin/python /path/to/your/manage.py update_some_data >> /var/log/update_some_data.log 2>&1
Это сделает ваше обновление ежедневным в 04:00. Если ваша команда выдаст какой-либо вывод, он будет записан в файл /var/log/update_some_data.log
.
Конечно, это всего лишь пример, поэтому пользователь вашего сервера, на котором выполняется ваше приложение (www-data
здесь) и путь к исполняемому файлу Python на сервере (/usr/local/bin/python
здесь) должны быть скорректированы для конкретного использования.
См. Ссылки для получения дальнейших указаний.