mod_wsgiをデーモンモードとして設定されている場合jcc.initVM()は戻りません。

StackOverflow https://stackoverflow.com/questions/548493

質問

私はジャンゴでのmod-wsgiのを使用しています、とDjangoで私は、フルテキスト検索を行うためにpyluceneを使用します。

MOD-WSGIを埋め込みモードであるように構成されているが、

、全く問題はありません。 MOD-wsgiのは、デーモンモードになるように構成されている場合でも、Apacheはちょうど、立ち往生 そして、ブラウザだけでロードを続けるが、何も表示されません。

それから私のアイデンティティjcc.initVM(べき問題)。 ここに私のWSGIスクリプトがあります:

import os, sys, jcc
sys.stderr.write('jcc.initVM\n')
jcc.initVM()
sys.stderr.write('finished jcc.initVM\n')
....
私はApacheを再起動して、私のブラウザからの要求を行った後、

、私はその/var/log/apache2/error.logを見つけます だけあります:

jcc.initVM

それはラインjcc.initVM()で立ち往生することを意味。 (のmod_wsgiを埋め込みモードとして設定されている場合、問題はない。)

そして、ここでは私の/ etc / apache2の/サイト利用可能/デフォルトです

WSGIDaemonProcess site user=ross group=ross threads=1
WSGIProcessGroup site
WSGIScriptAlias / /home/ross/apache/django.wsgi

<Directory /home/ross/apache/>
  Order deny,allow
  Allow from all
</Directory>

そして最後に、私はJCC(jcc.cpp)のソースコードでは、それは機能でハングすることがわかります:

JNI_CreateJavaVM(&vm, (void **) &vm_env, &vm_args)

問題を解決する方法は?

プログラムのバージョン:

libapache2-mod-wsgi 2.3-1
jcc 2.1
python 2.5
Apache 2.2.9-8ubuntu3
Ubuntu 8.10
役に立ちましたか?

解決

この問題に対する修正はmod_wsgiを2.4に含まれていた。

他のヒント

http://code.google.com/を参照してくださいP / modwsgi /問題/詳細?ディスカッション詳細ID = 131 に。

要するに、 mod_wsgiのはinitVMが動作しないことがありデーモンプログラムのためのシグナルをブロックします。さらにに従って JCCからのアンディ、initVMはメインスレッドからのみ呼び出すことができ、そしてそれは同様にさらなる問題を引き起こす可能性があります。

は、したがって、私は完全に別のプロセスにinitVM()と検索コードを移動することを決定し、問題を解決します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top