سؤال

أنا أستخدم MOD-WSGI مع Django، وفي Django أستخدم Pylucene للبحث عن النص الكامل.

على الرغم من أنه تم تكوين وزارة الدفاع WSGI للوضع المضمن، فلا توجد مشكلة على الإطلاق. ولكن عندما يتم تكوين وزارة الدفاع 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 كوضع مضمن، فلا توجد مشكلة.)

وهنا الخاص بي / إلخ / Apache2 / المواقع المتاحة / الافتراضية:

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 الإشارات لبرنامج الخفي، والتي قد تجعل intervm لا يعمل. علاوة على ذلك وفقا ل Andi من JCC، لا يمكن استدعاء initvm إلا من الخيط الرئيسي، وقد يتسبب في مزيد من المشكلات أيضا.

لذلك قررت نقل رمز البحث باستخدام initvm () إلى عملية منفصلة تماما وحل المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top