Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django初始化_Python_Django - Fatal编程技术网

Python Django初始化

Python Django初始化,python,django,Python,Django,我有一个大数组,我只想在django启动时将其加载到内存中一次,然后将其视为只读全局变量。什么是放置该数组初始化代码的最佳位置 如果我把它放在settings.py中,每次导入设置模块时它都会重新初始化,对吗?settings.py是正确的位置。与任何其他模块一样,Settings.py只加载一次。仍然存在这样一个问题,即每个进程必须导入一个模块,因此重新启动的web服务器(如apache)将为每个有问题的实例重新加载一次模块。对于mod_python,这将是每个进程一次。对于mod_wsgi,

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


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

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


tl;dr模块只导入一次,即使使用了多个导入语句。将其放入settings.py

settings.py用于Django设置;将您自己的设置放在其中是可以的,但将其用于任意非配置数据结构并不是一种好的做法


只要把它放在逻辑上属于它的模块中,每个实例只运行一次。如果您想保证模块在启动时加载,而不是在以后第一次使用时加载,请从顶级的
\uuuu init\uuuu.py
导入该模块以强制立即加载。

对于mod\u wsgi,该Django实例的每个进程也将加载一次。可以使用多少进程取决于您使用的是嵌入式模式还是守护程序模式,以及Django实例运行的进程数。有关mod_wsgi不同操作模式的更多详细信息,请参阅“”。将初始化放在settings.py中通常会导致循环导入问题。我已经多次遇到这种情况,我警告任何这样做的人都要注意循环导入。但是如果初始化代码init.py依赖于某些设置呢?