mod_wsgi是否为每个端口创建解释器

0 投票
1 回答
1154 浏览
提问于 2025-04-17 09:00

我的开发环境是Windows,这意味着Apache的MPM只能是'winnt'。我发现了一个奇怪的事情:

1。Apache只监听8080端口,我没有设置任何虚拟主机,但在错误日志中,为什么它会为'myhost.com:8080|'和'myhost.com|'创建两个解释器?按理说应该只有8080的那个。

访问日志:

124.237.78.181 - - [20/Dec/2011:16:36:18 +0800] "GET http://www.baidu.com/ HTTP/1.1" 404 29  

这个请求会导致Apache创建80个解释器(请注意时间)。我不知道这是什么原因(可能是代理检测?)。不过我可以通过telnet来模拟这个情况。

telnet myhost.com 8080  
GET http://www.baidu.com/

错误日志:

[Tue Dec 20 15:50:14 2011] [info] mod_wsgi (pid=1008): Create interpreter 'myhost.com:8080|'.
[Tue Dec 20 15:50:14 2011] [info] mod_wsgi (pid=1008): Adding 'E:/eclipse workspace/SubscriptionServer/src' to path.
[Tue Dec 20 15:50:14 2011] [info] [client 66.220.151.121] mod_wsgi (pid=1008, process='', application='myhost.com:8080|'): Loading WSGI script 'E:/eclipse workspace/SubscriptionServer/src/business/dispatcher.py'.
[Tue Dec 20 16:36:19 2011] [info] mod_wsgi (pid=1008): Create interpreter 'myhost.com|'.
[Tue Dec 20 16:36:19 2011] [info] mod_wsgi (pid=1008): Adding 'E:/eclipse workspace/SubscriptionServer/src' to path.
[Tue Dec 20 16:36:19 2011] [info] [client 124.237.78.181] mod_wsgi (pid=1008, process='', application='myhost.com|'): Loading WSGI script 'E:/eclipse workspace/SubscriptionServer/src/business/dispatcher.py'.  

2。当我关闭Apache时,不管它创建了多少个解释器,它只会销毁8080的那个解释器。

[Sun Dec 25 15:49:08 2011] [info] mod_wsgi (pid=4288): Destroying interpreters.
[Sun Dec 25 15:49:08 2011] [info] mod_wsgi (pid=4288): Destroy interpreter 'myhost.com:8080|'.

我想让Apache只创建8080的解释器,我该怎么做呢?

1 个回答

1

默认情况下,针对80和443端口的请求会在同一个子解释器中处理。而针对其他端口的请求则会在不同的解释器中处理。这一点在mod_wsgi的文档中有说明。

http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIApplicationGroup

至于你为什么会看到两者并存,我就不太清楚了,因为你之前在另一个问题中提到这个时并没有进一步跟进。

变量会被实例化多次

其实,StackOverflow并不是解决你配置问题的合适地方。你应该使用mod_wsgi的邮件列表,那里的专家可以指引你找到合适的文档,教你如何在WSGI应用脚本中添加调试信息,以找出与80端口相关的多余请求是从哪里来的。

http://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6#Asking_Your_Questions

文档中很清楚地说明,如果你想要关于mod_wsgi的帮助,最好使用邮件列表,而不是StackOverflow。StackOverflow在调试方面并不靠谱,那里并不是一个讨论论坛,只有在有人知道确切答案时才有用。

撰写回答