Django初始化

dzh*_*lil 10 python django

我有一个大数组,我想在django启动时只加载到内存中一次,然后将其视为只读全局变量.放置代码初始化代码的最佳位置是什么?

如果我把它放在settings.py中,每次导入设置模块时它都会重新初始化,对吗?

Gle*_*ard 17

settings.py适用于Django设置; 可以将自己的设置放在那里,但将其用于任意非配置数据结构并不是一种好习惯.

只需将它放在逻辑上属于的模块中,每个实例只运行一次.如果要保证模块在启动时加载而不是稍后首次使用,请从顶层导入该模块__init__.py以强制立即加载该模块.


Sin*_*ion 9

settings.py是正确的地方.与任何其他模块一样,Settings.py加载一次.仍然存在这样的问题:每个进程必须导入一次模块,因此重新生成的Web服务器样式(如apache)将为每个相关实例重新加载一次.对于mod_python,每个进程一次.对于mod_wsgi,这可能只是一次,除非您必须重新启动.

即使使用了多个import语句,tl; dr模块也会导入一次.把它放在settings.py中

  • 对于mod_wsgi,对于该Django实例,它也将是每个进程一次.您使用嵌入模式或守护程序模式以及Django实例运行的进程数量决定了可能有多少进程.有关mod_wsgi的不同操作模式的更多详细信息,请参阅"http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading". (2认同)