문제

나는 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가 임베디드 모드로 구성된 경우 아무런 문제가 없습니다.)

그리고 여기 내/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에 포함되었습니다.

다른 팁

참조하십시오 http://code.google.com/p/modwsgi/issues/detail?id=131 토론 세부 사항.

요컨대, mod_wsgi는 데몬 프로그램의 신호를 차단하여 INITVM이 작동하지 않을 수 있습니다. 또한 JCC의 Andi에 따르면 InitVM은 기본 스레드에서만 호출 될 수 있으며 추가 문제를 일으킬 수 있습니다.

따라서 검색 코드를 initvm ()로 완전히 별도의 프로세스로 옮기고 문제를 해결하기로 결정했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top