2016-09-16 3 views
2

Как загрузить ресурсы из базы данных mysql при запуске Django и поместить его в память (Redis) для использования всеми приложениями.Ресурсы загрузки Django при запуске

Я видел это [https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.ready]

class MyAppConfig(AppConfig): 
     def ready(self): 

Но они упоминают не использовать DB соединения внутри готовой функции. Как это сделать, когда начинается мой сайт?

И могу ли я также установить значение кеша в готовом?

from django.core.cache import cache 
cache.set() 

ответ

1

Поскольку вы только загружаются в Redis, а не создавать экземпляры моделей, которые удерживаются в памяти и разделяемых всеми приложениями на вашем сайте, возможно, лучший способ заключается в использовании custom management command.

Второе решение заключается в создании Джанго CLI, а отправленный e4c5 на экс-документации:

предположив, что вы настроили проект Джанго, и файл настроек в приложении под названием основной, это то, как вы инициализировать ваш код

import os, sys 

# Setup environ 
sys.path.append(os.getcwd()) 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "main.settings") 

# Setup django 
import django 
django.setup() 

# rest of your imports go here 

from main.models import MyModel 

# normal python code that makes use of Django models go here 

for obj in MyModel.objects.all(): 
    print obj 

выше может быть выполнена как

python main/cli.py 

Поскольку вы используете redis, вам действительно нужно хранить вещи в memcache? Но если вам это нужно, это тоже может быть сделано из CLI

+0

Можно ли сохранить значения в контексте приложения. И доступ всех пользователей. ? Даже если у нас есть, когда мы развертываем apache, экземпляр wsgi может перезагрузиться. Поэтому я думаю, мне нужно хранить в memcahe для часто изменяющихся данных в реальном времени для всех пользователей. –

+0

Итак, ваша команда/CLI нам нужно запускать отдельно? Как мы можем интегрировать все в один веб-проект и начинать работу с Apache. –

+0

Обратите внимание на то, что это совсем не связано с перезагрузкой Apache. Если вы истекаете элемент из кеша, вы должны сделать это, где бы вы ни находились в коде, где элемент был изменен, и не дожидаться перезапуска apache. – e4c5

Смежные вопросы