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

时间:2010-06-11 18:46:56

标签: python django apache mod-wsgi

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

对于django开发服务器一切正常,但看起来像apache2和mod_wsgi模块加载了每个请求(花了15秒)。

有关此行为的任何想法?

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我猜,在Apache设置中,MaxClients / MaxRequestsPerChild和/或ThreadsPerChild的值为1。所以Apache必须为每次mod_python调用启动Django。这就是为什么花了这么长时间。如果你有一个wsgi-daemon,那么只有你“触摸”wsgi脚本才能重启。