[Zope-DB] Thread question

Bogdan M. Maryniuck b.maryniuk at forbis.lt
Wed Jun 23 09:26:23 EDT 2004


Hi.

This is probably wrong maillist, but this is only I can subscribe...

Problem: 
I have an object, called "pdfBurner" and I need do in PythonScript 
something like this:

---------------8<------------------
context.pdfBurner.burn(filename = 'test.pdf')
return "PDF burner in process"
---------------8<------------------

This means, you call this PythonScript and it calls burn() method which
starts separate thread and *immediately* exits to show use the message
"PDF burner in process". OK, but it works for me only once. Next time
it sais:

File "/opt/Zope-2.6.2/lib/python/ZODB/Connection.py", line 540, in setstate
    raise RuntimeError(msg)
RuntimeError: Shouldn't load state for '\x00\x00\x00\x00\x00\x04\xf9\x95' when the connection is closed


OK, I know what it means. It appears exactly when I do:

    def parseXML(self, xmlDoc):
        return xml.dom.minidom.parseString(xmlDoc) # <-- here

Maybe I should parse XML in other way? Or not? But if I do:

class MyProduct(....):
    lock = ThreadLock.allocate_lock()
    ...
    self.lock.aquire()
    ...
    self.lock.release()

...my PythonScript waits until burn() finish, than shows the message.
Since PDF creation takes not-so-short time, browser usually fails with
"Site timeout" -- that's why I exactly want background threads! I don't
care how long my child thread will run, but I care _immediately_ response
to user for PDF in process and he can go drink coffee or something. ;-)

Question: how to run burn process in the Thread, but avoid this exception?
Maybe there is some correct workaround? Can anybody help me here?

Thank you much for advance!

-- 
Regards, Bogdan M. Maryniuk
Developer. Forbis UAB



More information about the Zope-DB mailing list