我有一个大数组,我想在django启动时只加载到内存中一次,然后将其视为只读全局变量。放置代码进行初始化的最佳位置是什么?
如果我把它放在settings.py中,每次导入设置模块时它都会重新初始化,对吗?
答案 0 :(得分:17)
settings.py适用于Django设置;可以将自己的设置放在那里,但将其用于任意非配置数据结构并不是一种好的做法。
只需将它放在逻辑上属于的模块中,每个实例只运行一次。如果要保证模块在启动时加载而不是稍后首次使用,请从顶级__init__.py
导入该模块以强制立即加载该模块。
答案 1 :(得分:9)
settings.py是正确的地方。与任何其他模块一样,Settings.py加载一次。仍然存在这样的问题:每个进程必须导入一次模块,因此重新生成的Web服务器样式(如apache)将为每个相关实例重新加载一次。对于mod_python,每个进程一次。对于mod_wsgi,这可能只是一次,除非您必须重新启动。
tl; dr模块导入一次,即使使用了多个import语句也是如此。把它放在settings.py
中