2016-06-17 4 views
0

В настоящее время у меня есть значительный проект django. В представлении я делаю большое вычисление, которое разделяется между представлениями, чтобы сэкономить время на последующих запросах. Чтобы активировать сайт, у меня есть скрипт python, который запускает несколько скриптов с помощью manage.py для таких вещей, как создание символических ссылок, сбор статических файлов и т. Д. Когда каждая из команд запускается, он загружает все приложения в проекте, что делает это большое вычисление. Я хочу предотвратить это. В идеале, я бы хотел, чтобы прекомпьютер произошел только один раз, когда я активирую. Я думаю, что нужно либо:Django Precomput in View

  1. Предотвратить manage.py от фактически загружая вид (не уверен, что это возможно)
  2. Лениво инициализирует вычисления (не идеально, так как первый человек, чтобы запросить Resouce будет принимать несколько мин)

Какие у меня варианты? Любая помощь приветствуется!

ответ

0

Вы можете использовать AppConfig для этого, более конкретно AppConfig.ready()

Смотрите эту SO answer или документацию о том, как это сделать.

Edit:

Одним из вариантов является запустить скрипт вручную из Джанго оболочки. Вы можете сделать это, набрав python manage.py shell в терминале. Затем вы можете импортировать модели, представления и аналогичные оболочки и выполнить сценарий или функцию.

Другим вариантом является привязка вычислений к виду, которое не используется ни для чего другого, и добавление URL-пути для запуска этой функции. Затем вы можете вручную перейти к этому URL-адресу, и расчет будет выполнен.

Будут ли эти методы подходящими?

+0

Это то, что я пробовал первым, но каждый раз, когда я запускаю manage.py, он создаст новый AppConfig, и запустится AppConfig.ready(). – Championcake