我的理解是mod_python将python进程加载到apache中,避免了在每次调用时执行此操作的开销。我的期望是,这意味着我的django堆栈也只会加载一次。
然而,我观察到的是,每个请求都从一开始就运行整个django堆栈,就好像它是第一个请求一样。重新导入设置。中间件__init__
,应该在django启动时运行一次,每次运行。等等。它似乎基本上就像我期望CGI一样。
这是预期的行为吗?我主要使用mod_wsgi,我相信这种方式不起作用,但我必须使用mod_python作为我当前的客户端。
谢谢!
答案 0 :(得分:2)
UNIX系统上的Apache是一个多进程系统,正如其他人所指出的那样。还要确保由于某种原因,Apache配置中的MaxRequestsPerChild尚未设置为1。理想情况下,该指令应设置为0,这意味着保持流程,而不是根据请求的数量回收它们。
答案 1 :(得分:0)
每个httpd进程加载一次Django。由于多个进程开始(每个子进程都是进程),因此启动了多个Django实例。