2009-09-25 2 views
1

Я пишу приложение базы данных, где некоторые части базы данных могут нуждаться в обновлениях на основе времени, а не на основе действий пользователя.Cronjobs in Django

Например, могут быть определенные значения, которые обновляются ежедневно, а некоторые другие значения, которые необходимо обновить, говорят, через четыре часа после создания записи в базе данных.

Таким образом, мне нужно как-то регулярно обновлять значения (сценарий, который ежедневно обновляет базу данных) и способ обновления значений в определенное время в будущем (при создании записи вам необходимо запустить обновление в четыре раза часы).

Управление базой данных осуществляется через веб-интерфейс, поэтому я использую Django для настройки базы данных и администрирования, поскольку Django делает создание базы данных приятным. Однако я понятия не имею, как настроить другую сторону, ту часть, которая обновляет базу данных в определенное время.

Как вы предлагаете это сделать? Достаточно ли запустить скрипт python и запустить его с ежедневным cronjob, или это не лучшая практика? Часто ли это делается, и существуют ли инструменты/методы для этого?

У меня нет опыта в этом, и я хотел бы знать, как это делается, прежде чем я вскочу и начну изобретать колесо.

ответ

6

Вы можете поставить задачу управления (один, который вызывается с ./manage.py <task name>), что делает то, что вам нужно. Таким образом, вы получили доступ ко всем настройкам, моделям и материалам, которые вы используете в своем проекте. И такой скрипт также легко поддерживать.

+1

Если у вас есть доступ к скриптам в cronjob, я предпочитаю делать это таким образом. Создание задач управления - это способ Django. Вы также получаете дополнительное преимущество, заключающееся в возможности вручную запускать команды из командной строки. –

+0

Абсолютно. Это очень легко сделать: http://docs.djangoproject.com/en/dev/howto/custom-management-commands/ – DrBloodmoney