0

这是在 web2py 中制作我们自己的搜索引擎的背景下。

我只想加载一次腌制索引,然后对进入我的 web2py 应用程序的每个请求继续重用它。有没有办法以不影响每个请求性能的方式做到这一点?

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

所以我尝试将它加载到gluon模块exec_environment定义中的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

但是性能并没有提高,而且速度很慢,和每次加载泡菜一样。通常,查询的搜索时间非常短,但在这里仍然花费了太多时间。

我是否遗漏了什么,我所做的事情是不正确的,还是有正确和更好的方法?

4

1 回答 1

0

在 /modules/search_index.py 中:

fp = open(file_name, "r")
tree = pickle.load(fp)
fp.close()

在您的应用程序代码中(即在模型或控制器中):

from search_index import tree
[do something with tree]
于 2013-09-29T02:32:24.463 回答