我有一个大的
XML文件,它被打开,加载到内存中,然后由
Python类关闭.简化示例如下所示:
class Dictionary():
def __init__(self,filename):
f = open(filename)
self.contents = f.readlines()
f.close()
def getDefinitionForWord(self,word):
# returns a word,using etree parser
在我的Flask应用程序中:
from dictionary import Dictionary
dictionary = Dictionary('dictionary.xml')
print 'dictionary object created'
@app.route('/')
def home():
word = dictionary.getDefinitionForWord('help')
我理解在理想的世界中,我会使用数据库而不是XML,并在每次请求时建立与此数据库的新连接.
我从文档中了解到,Flask中的应用程序上下文意味着每个请求都会导致重新创建dictionary = new Dictionary(‘dictionary.xml’),因此在磁盘上打开一个文件并将整个内容重新读入内存.但是,当我查看调试输出时,我看到创建的字典对象只打印了一次,尽管从多个源(不同的会话?)连接.
我的第一个问题是:
因为我的应用程序似乎只加载XML文件一次…然后我可以假设它全局驻留在内存中,并且可以通过大量的同时请求安全地读取,仅限于我服务器上的RAM – 对?如果XML是50MB,那么大约需要.内存50MB,可以高速同步请求…我猜这并不容易.
我的第二个问题是:
如果不是这样的话,那么我对处理大量流量的能力有什么限制?如果我重复打开50MB XML,从磁盘读取并关闭,我可以处理多少个请求?我一次假设一个.
我意识到这是模糊的,依赖于硬件,但我是Flask,python和网络编程的新手,只是寻找指导.
谢谢!