为什么mod_python从每个请求开始运行整个django堆栈?

时间:2010-09-03 01:47:08

标签: django mod-python

我的理解是mod_python将python进程加载到apache中,避免了在每次调用时执行此操作的开销。我的期望是,这意味着我的django堆栈也只会加载一次。

然而,我观察到的是,每个请求都从一开始就运行整个django堆栈,就好像它是第一个请求一样。重新导入设置。中间件__init__,应该在django启动时运行一次,每次运行。等等。它似乎基本上就像我期望CGI一样。

这是预期的行为吗?我主要使用mod_wsgi,我相信这种方式不起作用,但我必须使用mod_python作为我当前的客户端。

谢谢!

2 个答案:

答案 0 :(得分:2)

UNIX系统上的Apache是​​一个多进程系统,正如其他人所指出的那样。还要确保由于某种原因,Apache配置中的MaxRequestsPerChild尚未设置为1。理想情况下,该指令应设置为0,这意味着保持流程,而不是根据请求的数量回收它们。

答案 1 :(得分:0)

每个httpd进程加载一次Django。由于多个进程开始(每个子进程都是进程),因此启动了多个Django实例。