hmm
i figured it out my self :D

no more deferToThread !

use directly the PythonThread bubu :D

       def render_GET(self, request):
               #d = threads.deferToThread(self.processRequest, request)
               self.processRequest(request)
               return server.NOT_DONE_YET

       def processRequest(self, request):
               t=PythonThread(target=self.doSearch, args=(request,))
               t.start()


and in doSearch at the end of the thread i call:
request.finish() to finish the Twisted Web output !

PyLucene rocks :D
very nice !

keep up the good work.

Yes, for using threads other than the main thread, you must use a PyLucene.PythonThread. For the same reasons, a PyLucene.PythonThread can only be created from the main thread or from another PyLucene.PythonThread. This is because libgcj's garbage collector insists on needed to initialize the thread before it gets used. A thread cannot be used with libgcj 'after the fact', it has to be created by libgcj.

Does processRequest start a thread for every request ?
In Chandler, where we use Twisted and PyLucene together, we created a thread pool whose threads are Python.PyLucene thread instances and it seems to work well.

Andi..



Friday, October 28, 2005, 12:23:48 PM, Catalin Constantin wrote:
i am trying to run the search in a twisted web application.

in my twisted resource i have:

        def render_GET(self, request):
                d = threads.deferToThread(self.processRequest, request)
                return server.NOT_DONE_YET

this seems not to be compatible with PyLucene.

i also tryed running a PythonThread but i get another error:

eg:
        def processRequest(self, request):
                print "inside process Request"
                t=PythonThread(target=self.doSearch, args=(request,))
                print "Starting PyThread"
                t.start()
                t.join()
                print "Done PyThread"
                request.finish()

  File "/usr/lib/python2.4/site-packages/PyLucene.py", line 3479, in start
    assert (current.getName() == 'MainThread' or
isinstance(current, PythonThread)), "PythonThread can only be
started from main thread of from another PythonThread"
exceptions.AssertionError: PythonThread can only be started from
main thread of from another PythonThread


Any help would be very appreciated.
10x.



--
Catalin Constantin
Bounce Software
http://www.bounce-software.com
http://www.cabanova.ro

_______________________________________________
pylucene-dev mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/pylucene-dev

_______________________________________________
pylucene-dev mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/pylucene-dev

Reply via email to