2016-09-16 62 views
2

当Django启动并将其放入内存(Redis)以供所有应用程序使用时,如何从MySQL数据库加载资源。Django在启动时加载资源

我看到这个[https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.ready]

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

但他们没有提及使用现成函数内部数据库的连接。我的网站启动时怎么办?

我可以在里面设置缓存值吗?

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

回答

1

由于您只加载到Redis的,而不是创造的在内存在您的网站上举行,共享所有的应用程序模型的实例,也许最好的办法是使用custom management command

第二种解决方案是创建一个Django CLI,如张贴e4c5除权文档上:

假设你已经建立了Django项目,并设置文件是在一个名为主要的应用程序,这是你如何初始化代码

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我们必须单独运行?我们如何将所有东西整合到一个Web项目中,并在Apache启动时启动。 –

+0

看完整的一点是,这与apache重启并不相关。如果您要从缓存中过期,应该从代码中修改项目的位置执行该操作,而不是等待apache重新启动。 – e4c5