Python Web2py仅在服务器启动时加载一次pickle数据,并在模块中使用该数据

Python Web2py仅在服务器启动时加载一次pickle数据,并在模块中使用该数据,python,web2py,pickle,Python,Web2py,Pickle,这是在web2py中创建我们自己的搜索引擎的背景下进行的 我只想加载一次pickled索引,然后继续对进入我的web2py应用程序的每个请求重用它。 有没有一种方法可以不影响每个请求的性能 在模型中加载它不起作用,因为每个请求都会执行模型。 同样,在模块中执行此操作也将在每个请求中执行模块中的代码 因此,我尝试将其加载到gluon module exec_环境定义中的shell.py中,并将以下代码放入其中 from gluon import current fp = open(file_nam

这是在web2py中创建我们自己的搜索引擎的背景下进行的

我只想加载一次pickled索引,然后继续对进入我的web2py应用程序的每个请求重用它。 有没有一种方法可以不影响每个请求的性能

在模型中加载它不起作用,因为每个请求都会执行模型。 同样,在模块中执行此操作也将在每个请求中执行模块中的代码

因此,我尝试将其加载到gluon module exec_环境定义中的shell.py中,并将以下代码放入其中

from gluon import current
fp = open(file_name, "r")
tree = pickle.load(fp)
fp.close()
current.tree = tree
为了使用树,在我写的模块中

from gluon import current
tree = current.tree
但性能没有提高,速度非常慢,与每次加载泡菜的速度相同。通常情况下,查询的搜索时间很短,但在这里仍然需要花费太多的时间


我是否遗漏了一些东西,并且我所做的是不正确的,或者是否有一种正确的、更好的方法来做到这一点?

在/modules/search\u index.py中:

fp = open(file_name, "r")
tree = pickle.load(fp)
fp.close()
在您的应用程序代码中(即,在型号或控制器中):

from search_index import tree
[do something with tree]