4

私はdjangoベースのサイトでピルセンを使用していますが、jvmを起動してスレッドを接続するのに最適な場所を誰かが知っているかどうか疑問に思っていました. 誰かがページをロードするたびに新しい jvm を開始する必要はありませんが、検索時にスレッドをアタッチしているときに、django で不可解な「名前をインポートできません」というエラーが時々発生していました。

views.pyにスレッドを付けるのは間違いですか?

編集:私は特に、単一のjvmをインスタンス化して実行したままにして、必要に応じてスレッドをアタッチできるようにする方法を探しています。jvm のインスタンス化には約 2 秒かかり、これは検索時の顕著な遅延です。

4

1 に答える 1

4

Django でピルセンを使用したことはありinitVM()ませんが、Django サーバーの起動時にかなり読み込まれるファイルで呼び出す必要があります (settings.py適切な場所です)。

About : 質問は、モジュールattachCurrentThreadをどこで使用しているかです。luceneそれがviews.pyにある場合は、もちろんviews.pyで行います。関数呼び出しごとに行うべきではないと思いますが。クラスベースの汎用 Django ビューを使用する場合、VM 環境をオブジェクト固有の変数に保存できます。views.py のグローバル スコープで試してみましたか?

また、 を呼び出す際には常に 2 つの手順が必要になることに注意してattachCurrentThreadください。

vm_env = lucene.getVMEnv()
vm_env.attachCurrentThread()

追加(以下のコメントを参照):

プロジェクトに設定をインポートする方法に依存すると思います。アプリで行うだけではìmport settings、モジュールが複数回読み込まれます。代わりに、常に from を実行しdjango.conf import settingsます。私の知る限り、元の設定ファイルはサーバーの起動時に一度だけロードされます

于 2011-07-01T05:36:37.200 に答える