使用django和mod_wsgi为每个请求重新加载Python模块

使用django和mod_wsgi为每个请求重新加载Python模块,python,django,apache,mod-wsgi,Python,Django,Apache,Mod Wsgi,我在模块的init中有一个变量,该变量从数据库加载,大约需要15秒 对于django开发服务器,一切正常,但与apache2和mod_wsgi类似,模块会加载每个请求(需要15秒) 你知道这种行为吗 更新:我已经在mod wsgi中启用了守护程序模式,看起来它现在没有重新加载模块!需要更多测试,我将更新。我猜,在Apache设置中,MaxClient/MaxRequestsPerChild和/或ThreadsPerChild的值为1。因此,Apache必须为每个mod_python调用启动Dja

我在模块的init中有一个变量,该变量从数据库加载,大约需要15秒

对于django开发服务器,一切正常,但与apache2和mod_wsgi类似,模块会加载每个请求(需要15秒)

你知道这种行为吗


更新:我已经在mod wsgi中启用了守护程序模式,看起来它现在没有重新加载模块!需要更多测试,我将更新。

我猜,在Apache设置中,MaxClient/MaxRequestsPerChild和/或ThreadsPerChild的值为1。因此,Apache必须为每个mod_python调用启动Django。这就是为什么花了这么长时间。如果您有一个wsgi守护进程,那么只有在“触摸”wsgi脚本时才会重新启动。

我猜,您的Apache设置中的MaxClient/MaxRequestsPerChild和/或ThreadsPerChild的值为1。因此,Apache必须为每个mod_python调用启动Django。这就是为什么花了这么长时间。如果您有一个wsgi守护程序,那么只有在“触摸”wsgi脚本时才会重新启动。

您可能忽略了一个事实,即在mod_wsgi的嵌入式模式下或使用mod_python时,应用程序是多进程的。因此,请求可能会转到不同的进程,在第一次遇到以前未命中的进程时,您将看到延迟。在mod_wsgi守护进程模式下,默认情况下只有一个进程。或者像其他人提到的那样,您将MaxRequestsPerChild设置为1,这是一个非常糟糕的主意。

您可能忽略了一个事实,即在mod_wsgi的嵌入式模式或mod_python中,应用程序是多进程的。因此,请求可能会转到不同的进程,在第一次遇到以前未命中的进程时,您将看到延迟。在mod_wsgi守护进程模式下,默认情况下只有一个进程。或者正如其他人提到的那样,您将MaxRequestsPerChild设置为1,这是一个非常糟糕的主意。

请提供您的apache mod_wsgi配置。请提供您的apache mod_wsgi配置。我明白您的意思,但是在守护程序模式下MaxRequestsPerChild设置为1有什么用?MaxRequestsPerChild与守护程序模式无关,它会影响Apache服务器子进程。在单个请求之后重新链接Apache服务器子进程是非常无效的,并且会影响服务器性能。如果您使用mod_Python或mod_wsgi嵌入式模式在嵌入式模式下运行Python代码,情况会更糟。性能可能会比CGI差,因为Apache服务器子进程清理和回收是如何发生的。我明白你的意思,但是在守护进程模式下,MaxRequestsPerChild设置为1是怎么回事?MaxRequestsPerChild与守护进程模式无关,它会影响Apache服务器子进程。在单个请求之后重新链接Apache服务器子进程是非常无效的,并且会影响服务器性能。如果您使用mod_Python或mod_wsgi嵌入式模式在嵌入式模式下运行Python代码,情况会更糟。性能可能会比CGI差,因为Apache服务器子进程清理和回收是如何发生的。