我在django中使用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配置为嵌入式模式,则没有问题。)
这里是my/etc/apache2/sites available/default:
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中。

关于python - 将mod_wsgi配置为守护程序模式时,jcc.initVM()不返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/548493/

10-11 16:47