当Django启动时,如何从mysql数据库加载资源并将其放入内存(Redis)中,以供所有应用程序使用。
我已经看到了这个 [https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.ready]
class MyAppConfig(AppConfig): def ready(self):
但是他们提到在ready函数中不使用db连接。我的网站启动时该怎么办?
我还可以在ready里面设置缓存值吗?
from django.core.cache import cache cache.set()
由于您仅加载到Redis中,而不是创建保存在内存中并由您网站中所有应用共享的模型实例,因此最好的方法可能是使用自定义管理命令。
第二种解决方案是创建Django CLI,如e4c5在前文档中所述:
假设您已经设置了一个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
假设您已经设置了一个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,您是否真的也需要将内容存储在内存缓存中?但是,如果您也需要这样做,则可以通过CLI进行操作