0

これは、web2py で独自の検索エンジンを作成するコンテキストです。

pickle 化されたインデックスを 1 回だけロードし、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 に答える