Pregunta

Estoy utilizando mod-WSGI con Django, Django y en uso PyLucene hacer búsqueda de texto completo.

Mientras mod-WSGI está configurado para ser encajado modo, no hay ningún problema en absoluto. Pero cuando mod-WSGI está configurado para ser el modo demonio, el Apache simplemente se atasca, y el navegador sólo mantener la carga, pero no aparece nada.

Entonces la identidad del problema a la jcc.initVM (). Aquí está mi script WSGI:

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

Después de reinicio mi Apache, y hago una petición de mi navegador, encuentro que /var/log/apache2/error.log sólo tiene:

jcc.initVM

Lo que significa que se queda atascado en la línea de jcc.initVM (). (Si el mod_wsgi está configurado como modo incrustado, no hay ningún problema.)

Y aquí está mi / 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>

Y, por último, me entero de que en el código fuente de CCM (jcc.cpp), que se cuelga en la función:

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

¿Cómo resolver el problema?

Las versiones del programa:

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

Solución

La solución a este problema se incluye en mod_wsgi 2.4.

Otros consejos

Por favor, consulte http://code.google.com/ p / modwsgi / temas / detalle? id = 131 para los detalles de discusión.

En resumen, el mod_wsgi bloqueará las señales para el programa demonio, lo que puede hacer initVM no funciona. Además, según Andi de CCM, initVM sólo se puede llamar desde el hilo principal, y puede causar más problema también.

Por lo tanto decidí cambiar el código de búsqueda con initVM () para un proceso totalmente independiente y resuelto el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top