Pergunta

Eu estou usando mod-wsgi com Django, e no Django pylucene eu uso para fazer pesquisa de texto completo.

Enquanto mod-wsgi está configurado para ser incorporado modo, não há nenhum problema em absoluto. Mas quando mod-wsgi está configurado para ser o modo daemon, o Apache só fica preso, eo navegador apenas manter carregamento, mas não aparece nada.

Depois de identidade I o problema a ser o jcc.initVM (). Aqui está o meu script wsgi:

import os, sys, jcc
sys.stderr.write('jcc.initVM\n')
jcc.initVM()
sys.stderr.write('finished jcc.initVM\n')
....

Depois que eu reiniciar o meu apache, e fazer um pedido do meu navegador, acho que /var/log/apache2/error.log só tem:

jcc.initVM

O que significa que ele fica preso na linha jcc.initVM (). (Se o mod_wsgi é configurado como modo incorporado, não há nenhum problema.)

E aqui está o meu / 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>

E, finalmente, eu descobrir que no código fonte de JCC (jcc.cpp), ele trava na função:

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

Como resolver o problema?

versões do programa:

libapache2-mod-wsgi 2.3-1
jcc 2.1
python 2.5
Apache 2.2.9-8ubuntu3
Ubuntu 8.10
Foi útil?

Solução

A correção para esse problema foi incluída no mod_wsgi 2.4.

Outras dicas

Por favor, consulte http://code.google.com/ p / modwsgi / questões / detalhes? id = 131 para os detalhes de discussão.

Em suma, o mod_wsgi irá bloquear os sinais para o programa daemon, o que pode fazer se initVM não funcionar. Além disso de acordo com a Andi de JCC, initVM só pode ser chamado a partir do thread principal, e pode causar outro problema também.

Por isso eu decidi mudar o código de pesquisa com initVM () para um processo totalmente separado e resolveu o problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top