Question

J'utilise mod-wsgi avec django, et django-je utiliser pylucene de faire des recherches en texte intégral.

Alors que mod-wsgi est configuré pour être mode intégré, il n'y a pas de problème du tout. Mais quand mod-wsgi est configuré pour être en mode démon, l'apache devient juste coincé, et le navigateur juste garder le chargement mais rien ne semble.

Alors je identifier le problème à l'jcc.initVM (). Voici mon script wsgi:

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

Après avoir redémarrer mon apache, et faire une demande de mon navigateur, je trouve que /var/log/apache2/error.log seulement a:

jcc.initVM

qui signifie qu'elle se coince sur la ligne jcc.initVM (). (Si le mod_wsgi est configuré en mode intégré, il n'y a pas de problème.)

Et voici mon / etc / apache2 / sites disponibles / 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>

Et enfin, je trouve que dans le code source de jcc (jcc.cpp), il se bloque à la fonction:

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

Comment résoudre le problème?

versions du programme:

libapache2-mod-wsgi 2.3-1
jcc 2.1
python 2.5
Apache 2.2.9-8ubuntu3
Ubuntu 8.10
Était-ce utile?

La solution

Le correctif de ce problème a été inclus dans mod_wsgi 2.4.

Autres conseils

S'il vous plaît se référer à http://code.google.com/ p / modwsgi / questions / détail? id = 131 pour les détails de la discussion.

En bref, la mod_wsgi bloquent les signaux pour le programme démon, ce qui peut rendre initVM ne fonctionne pas. En outre, selon Andi de jcc, initVM ne peut être appelé à partir du thread principal, et il peut causer des problèmes plus aussi bien.

J'ai donc décidé de déplacer le code de recherche avec initVM () à un processus totalement séparé et a résolu le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top