Python Django初始化
我有一个大数组,我只想在django启动时将其加载到内存中一次,然后将其视为只读全局变量。什么是放置该数组初始化代码的最佳位置Python Django初始化,python,django,Python,Django,我有一个大数组,我只想在django启动时将其加载到内存中一次,然后将其视为只读全局变量。什么是放置该数组初始化代码的最佳位置 如果我把它放在settings.py中,每次导入设置模块时它都会重新初始化,对吗?settings.py是正确的位置。与任何其他模块一样,Settings.py只加载一次。仍然存在这样一个问题,即每个进程必须导入一个模块,因此重新启动的web服务器(如apache)将为每个有问题的实例重新加载一次模块。对于mod_python,这将是每个进程一次。对于mod_wsgi,
如果我把它放在settings.py中,每次导入设置模块时它都会重新初始化,对吗?settings.py是正确的位置。与任何其他模块一样,Settings.py只加载一次。仍然存在这样一个问题,即每个进程必须导入一个模块,因此重新启动的web服务器(如apache)将为每个有问题的实例重新加载一次模块。对于mod_python,这将是每个进程一次。对于mod_wsgi,这可能只是一次,除非您必须重新启动
tl;dr模块只导入一次,即使使用了多个导入语句。将其放入settings.pysettings.py用于Django设置;将您自己的设置放在其中是可以的,但将其用于任意非配置数据结构并不是一种好的做法
只要把它放在逻辑上属于它的模块中,每个实例只运行一次。如果您想保证模块在启动时加载,而不是在以后第一次使用时加载,请从顶级的
\uuuu init\uuuu.py
导入该模块以强制立即加载。对于mod\u wsgi,该Django实例的每个进程也将加载一次。可以使用多少进程取决于您使用的是嵌入式模式还是守护程序模式,以及Django实例运行的进程数。有关mod_wsgi不同操作模式的更多详细信息,请参阅“”。将初始化放在settings.py中通常会导致循环导入问题。我已经多次遇到这种情况,我警告任何这样做的人都要注意循环导入。但是如果初始化代码init.py依赖于某些设置呢?