gpt4 book ai didi

python - 变量将被多次实例化

转载 作者:行者123 更新时间:2023-11-28 18:53:18 25 4
gpt4 key购买 nike

在使用 Python2.7+Apache+mod_wsgi 开发小型 Web 服务器时,我遇到了一些异常情况。该服务器的主要用途是:

  1. 接收来自另一台服务器(服务器A)的常规请求,并将请求正文放入数据库。
  2. 使用一些后台线程解析DB中的请求体,并将解析后的信息发送给第三方服务器(服务器B)。

Apache 配置为 Windows 'winnt' MPM 模式。入口点dispatch.py​​的代码如下:

from urlparse import parse_qs

pool = MyThreadClass() # A customized thread class to parse request body in DB
pool.start()

def application(environ, start_response):
# Receiving regular request from server A and put request body into BD
output = 'OK'
start_response('200OK', [('Content-Type', 'text/plain')])
return [output]

一开始,线程类是在服务器启动时创建的,完美运行。然而,几个小时后,我发现线程类(MyThreadClass)将再次被实例化,这意味着此时将有两个 MyThreadClass实例在后台运行。
不知道Apache启动时这样创建实例是否正确。你有什么想法吗?

[edit1] 以下是 apache 中 wsgi 部分的配置:

WSGIScriptAlias / "E:/eclipse workspace/SubscriptionServer/src/business/dispatcher.py"
WSGIPythonPath "E:/eclipse workspace/SubscriptionServer/src"

<Directory "E:/eclipse workspace/SubscriptionServer">
Order deny,allow
Allow from all
</Directory>

[edit2] 我已按照@Graham 给出的说明将 LogLevel 设置为“info”。我想我找到了原因,但无法解释原因!
以下是访问日志和错误日志的日志。我的服务器正在监听 8080。error.log 的前三行是在服务器启动时记录的。但是,在2011年16:36:18的访问日志中,有一个来自124.237.78.181的请求请求http://g.ha99y.com/R.asp?P=123.157.218.85:8080。 .就在这时,在错误日志中,服务器再次加载 dispatcher.py。我无法解释该调用从何而来以及为什么它会创建两个解释器“myhost.com:8080|”和“myhost.com|”。

access.log:

124.237.78.181 - - [20/Dec/2011:16:36:18 +0800] "GET http://g.ha99y.com/R.asp?P=123.157.218.85:8080 HTTP/1.1" 404 29

error.log:

[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'.

最佳答案

您可能修改了导致 mod_wsgi 重新加载它的 WSGI 脚本文件。

关闭重新加载使用:

WSGIScriptReloading Off

每当您更改代码时,请确保重新启动 Apache。

阅读:

http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode#Reloading_In_Embedded_Mode http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIScriptReloading

关于python - 变量将被多次实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8570446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com