最近,我发现,放置Python代码这条线以上WSGI - 是否应该将所有内容都放在“environ”行的下面,以便“全局”缓存任何内容?
def application(environ, start_response):
将导致东西8个线程被缓存。
基于我的apache错误日志文件..我一遍又一遍重新加载我的wsgi脚本,并实现了8个线程(进程)由wsgi脚本创建。
在低于该代码换句话说..
import os
ooo = os.popen('/text-file.txt').read()
def application(environ, start_response):
start_response('200 OK', [('content-type', 'text/html')])
yield ooo
文本file.txt的内容实际上
cached
在8个不同的线程。
WSGI脚本后,创建了8级不同的线程和缓存这8周不同的时间..它选择一个随机出8缓存的,因此,如果
/text-file.txt
被修改,更新,甚至没有关系。等等..
的解决方案似乎是放置
ooo = os.popen('/text-file.txt').read()
的ENVIRON线就这样下:
import os
def application(environ, start_response):
ooo = os.popen('/text-file.txt').read()
start_response('200 OK', [('content-type', 'text/html')])
yield ooo
这个上面的代码工作正常。
ooo = os.popen('/text-file.txt').read()
是基于文件的实时读数,并没有什么在8个流程8周不同的时间缓存。
这里的问题是...
,如果我有一个像太多的线,如
ooo = os.popen('/text-file.txt')
ooo2 = ooo.read()
ooo3 = "something"
ooo4 = "something else"
我的意思基本上这整个事情将有
ENVIRON线
下得去但如果我有这些例如在一个wsgi脚本中有40个。这里是它的将是什么样子假设他们都是不同的东西..
import os
def application(environ, start_response):
ooo = os.popen('/text-file.txt')
ooo2 = ooo.read()
ooo3 = "something"
ooo4 = "something else"
start_response('200 OK', [('content-type', 'text/html')])
yield ooo
如果有这样的事情太多了..应该都下
def application(environ, start_response):
放置或它们应该被称为通过
functions ?
还是不要紧?
什么是创建最繁密的代码的方法?
是的,Python模块被缓存。这是使用WSGI的重点,不必为每个请求重新运行新的Python解释器。 –
@Martijn彼得斯,但它不只是模块。正在读取的文件的内容也被缓存。你在哪里听说过这个世界或这个宇宙中的一些概念? –
@Martijn Pieters,你是否想说......“将文件路径提供给在environ行之上定义的类或函数”? –