Hi Andi,

Thanks for the reply. My example runs fine when it runs alone (pure python).
Here is the code:

#import sys, os
#sys.path.append("/home/v/workspace/example-project/src/trunk")
#os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings'
from lucene import Field, Document, initVM, NIOFSDirectory, IndexWriter,
StandardAnalyzer, Version, File
from lucene import SimpleFSLockFactory, NumericField, IndexSearcher,
QueryParser, NumericRangeQuery
from lucene import Integer, BooleanQuery, BooleanClause
#from django.shortcuts import render_to_response
def build():
    initVM()
    dir = NIOFSDirectory(File("/home/v/index"), SimpleFSLockFactory())
    analyzer = StandardAnalyzer(Version.LUCENE_30)
    writer = IndexWriter(dir, analyzer, True,
IndexWriter.MaxFieldLength(1024))

    field_rows = FieldDoc.objects.all() # Currently there is only one row in
database
    for row in field_rows:
        doc = Document()
        if row.category != "":
            doc.add(Field('category', row.category, Field.Store.YES,
Field.Index.NOT_ANALYZED))
            writer.addDocument(doc)

    writer.close()
    #return render_to_response("index.html", {"var": "Success"})

But when I connect it with httpd/mod_wsgi, I see the "Success" page some
times and other times, it says "Internal Server Error" with the errors as
mentioned in previous email. I am not aware what is the best practice to run
Python Lucene code from a web server.

You have mentioned about using attachCurrentThread(). I tried using it this
way:
env = initVM()
env.attachCurrentThread()

but no change in the response. I don't know if this is how
attachCurrentThread() should be used in above build function. Please guide
how to connect Lucene code with Apache2/wsgi. My apache2/wsgi is configured
properly as I can run non lucene coded web pages. Apache2 is using
mpm-worker, a threaded environment.

Thanks.

Regards,
Vin



On Sun, Aug 29, 2010 at 12:21 PM, Andi Vajda <va...@apache.org> wrote:

>
> On Sun, 29 Aug 2010, technology inspired wrote:
>
>  I am using PyLucene 3.0.2 on Ubuntu 10.04 with Python 2.6.5 and Sun Java
>> 1.6. I am written an example script to build index and store in a
>> directory.
>> Later on, I want it to search in my next example script which as of now I
>> haven't written.
>>
>> There are two issues I have to mention and looking for your help:
>>
>> ISSUE 1:
>> I am using Apache2 with mod_wsgi 3.3. I have got the index building script
>> connected to a GET request. When I call that GET request, I get following
>> errors:
>>
>> [error] [client 127.0.0.1] Premature end of script headers: wsgi
>> [notice] child pid exit signal Aborted (6).
>>
>> With this error, I see "Internal Server Error" on my browser screen. This
>> error appears only if I make GET request very often, i.e. around 1 per 2
>> seconds. If I issue GET at the interval of 10 seconds, I don't see these
>> errors.
>>
>> ISSUE 2:
>> When I index Date field using NumericField, the GET request gives
>> "Internal
>> Server Error" on every alternate request. and the Apache2 log files gets
>> these errors:
>> [error] [client 127.0.0.1] Premature end of script headers: wsgi
>> [notice] child pid exit signal Segmentation fault (11)
>>
>> I am looking for help to solve these problems. I am running WSGI deamon
>> mode. WSGI settings are:
>> ...
>> WSGIDaemonProcess example.com user=www-data group-www-data thread 25
>> WSGIProcessGroup example.com
>> WSGIScriptAlias / /home/user1/workspace/http_wsgi/wsgi
>> ...
>>
>> So do guide how to enable PyLucene based codes running from Apache2
>> mod_wsgi
>> (searching, indexing etc).
>>
>
> First, get your application to work outside of apache2/wsgi, as a plain
> Python program. Then, once it's debugged, adapt it to the apache2/wsgi
> environment. And, last but not least, if you are using threads, be sure to
> call attachCurrentThread() [1] before calling into the JVM.
>
> Andi..
>
> [1] http://lucene.apache.org/pylucene/jcc/documentation/readme.html#api
>

Reply via email to