当我使用 Apache 配置我的 web.py 代码时,我遇到了一个奇怪的问题。我有 3 个变量需要在 2 个类中使用。我曾经使用全局变量来处理这个问题,但不幸的是现在这不起作用。
例子:
urls = (
'/', 'index',
'/result','Result'
)
# index is basically a form which takes some inputs
class index:
def POST(self):
global VAR1, VAR2, VAR3
i = web.input()
VAR1 = i.word1.__str__()
VAR2 = i.word2.__str__()
VAR3 = i.word3.__str__()
raise web.seeother('/result')
class Result:
def GET(self):
print VAR1, VAR2
return r_result(VAR1, VAR2)
def POST(self):
print VAR2, VAR3
当我独立运行代码(即 python webappy.py)时,这工作得非常好,但是当在 apache 设置中使用时,它给出:
NameError:全局名称 'VAR1' 未在 Result.Get 的打印语句中定义
我正在检查 ApplicationIssues:http ://code.google.com/p/modwsgi/wiki/ApplicationIssues并发现了以下声明。
应用程序全局变量
因为托管 WSGI 应用程序的 Python 子解释器在请求之间保留在内存中,所以任何全局数据都是有效的持久性,并且可以用于将状态从一个请求传递到下一个请求。然而,在 UNIX 系统上,Apache 通常会使用多个进程来处理请求,并且每个这样的进程都有自己的全局数据。这意味着虽然可以使用全局数据,但它只能用于缓存可以在该单个进程的上下文中安全重用的数据。您不能使用全局数据作为保存任何请求处理程序必须可见的信息的手段,无论它在哪个进程中运行。
我必须在类和函数之间传递这些变量。我尝试将变量附加到内置和网络模块,但它也没有锻炼。
PS:我也不想将这些变量存储在文件或数据库中。
我希望我说清楚了。