Django在启动时加载资源

时间:2016-09-16 02:48:25

标签: python django apache redis

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

我见过[https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.ready]

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

但是他们提到不在ready函数中使用db连接。我的网站启动时该怎么做?

我还可以在缓存中设置缓存值吗?

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

1 个答案:

答案 0 :(得分:1)

由于您只是加载到redis而不是创建存储在内存中并由网站中所有应用共享的模型实例,因此最好的方法是使用custom management command

第二个解决方案是创建一个Django CLI,由e4c5在ex-documentation上发布:

  

假设您已经设置了django项目,并且设置文件位于名为main的应用程序中,这就是您初始化代码的方式

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完成这项工作