我醒来后通过网络刷新了我的wsgi脚本。
在这个wsgi脚本中有以下python代码。在
import os
ooo = os.popen("date").read()
系统日期不正确。所以我刷新了wsgi脚本。在
系统时间现在显示的是我之前看到的系统时间。在
我越是刷新网络浏览器。。我越注意到输出是相当随机的。在
系统时间好像。。在
python或wsgi在10个不同的线程中缓存它10次,然后从这10个缓存线程中随机显示一个。在
根据信息。。结果发现python没有进行缓存,WSGI可能负责这种缓存。在
嗯。。。我的理解是WSGI只是允许python通过web工作。。我不知道它在做线程和缓存之类的事情。在
我甚至认为WSGI加载一次,因此只能执行一次。在
这是否意味着每次需要非缓存结果时都必须重新加载WSGI脚本?在
所以基本上,每次我在我的网站上执行wsgi脚本时,最好还是重新启动整个apache?在
我想这意味着,如果我的网站每天收到那么多点击,我将每天重启apache 100万次?在
如何告诉WSGI不缓存的输出
^{pr2}$是吗?在
之所以会出现“缓存”,是因为WSGI服务器/容器只加载应用程序一次。之后,对于每个请求,它调用WSGI函数。这意味着任何全局(模块级)变量只初始化一次。在
举个简单的例子:
如果你运行这个程序,你会发现第一次保持不变,第二次不变。如果你用不同的WSGI服务器(比如apache/mod_WSGI)运行这个例子,情况也是一样的,只是通常会启动应用程序的多个实例,并用以服务于不同的请求。这就解释了为什么你会看到不同的价值观。在
所以解决方案很简单:所有应该是动态的都必须在对wsgi函数的调用中生成,不要使用全局变量。在
相关问题 更多 >
编程相关推荐