Django 初始化
我有一个很大的数组,我想在Django启动的时候只加载一次,然后把它当作一个只读的全局变量来使用。请问把初始化这个数组的代码放在哪里比较好呢?
如果我把它放在settings.py里,每次导入设置模块的时候,它会被重新初始化,对吧?
2 个回答
19
settings.py 是用来设置 Django 的配置文件;在里面放自己的设置是可以的,但把它用来放一些随便的数据结构就不太好。
最好把这些数据放在它应该放的模块里,这样每个实例只会运行一次。如果你想确保这个模块在启动时就加载,而不是等到第一次使用时再加载,可以在你的顶层 __init__.py
文件里导入这个模块,这样就能强制它立即加载。
9
settings.py 是放置这些设置的合适地方。settings.py 就像其他模块一样,只会加载一次。不过,还有一个问题,就是每个进程必须单独导入模块,所以像 Apache 这样的重启式网页服务器会为每个实例重新加载一次。对于 mod_python 来说,每个进程只会加载一次。而对于 mod_wsgi,通常只会加载一次,除非你需要重启。
简单来说,模块只会被导入一次,即使你用了多个导入语句。所以,把它放在 settings.py 里就行了。