win32 design pattern: COM localserver?
Mark Hammond
skippy.hammond at gmail.com
Thu Dec 9 19:59:49 EST 2010
If you are implementing a COM object using win32com, then Python will
never be unloaded from the host process, which works in your favour.
Just have the COM object use a thread and a queue for this processing.
The 'report' method would just stick the params and filenames in the
queue and return immediately - your thread should stay alive and working
away so long as the host process remains alive. You probably need to
deal with the face the thread will be unexpectedly terminated when the
host process terminates or add a new method designed explicitly to block
the host process until everything is complete - the host program would
then call this method just before it terminates.
Also note there is a python-win32 at python.org mailing list where you
might get better or more advice...
Cheers,
Mark
On 8/12/2010 8:03 PM, kirby.urner at gmail.com wrote:
> Greetings gurus.
>
> I'm faced with the challenge of having a single-threaded proprietary
> Win32
> language wanting to do multiple calls against a Python COM object.
>
> Something like...
>
> loObj = CREATEOBJECT("map_maker")
> loObj.report( params, filename)
>
> do while .True.
> yadda yadda
> enddo
>
> RETURN
>
> I.e. the client program continues execution while loObj churns away
> somewhere doing work in Python, say accessing a MySQL database
> and building a map, embedding it in a PDF.
>
> Am I right that the COM object will need to "serve forever" i.e. be
> built around some non-terminating loop? Will the client's call then
> spawn a process or thread that continues until finished?
>
> All it has to do is leave a file on disk somewhere, then die. But
> the client can't be kept on the hook until that's all done.
>
> I've had good luck doing an InProcess COM object the generates
> a PDF from ReportLab. But this "stay alive while returning control
> to the client" challenge looks like it might be a job for sockets?
>
> Gee I hope not.
>
> Quick links to favorite blog articles will give me a sense of the
> ballpark... Any clues welcome. Yes, I have the Win32 book from
> O'Reilly.
>
> Kirby
>
> PS: my thanks to Ethan Furman for performing maintenance and
> upgrades on his dbf module on PyPI. The FoxPro gods thank you.
> http://pypi.python.org/pypi/dbf/0.88.16
>
> PPS: some thoughts about IronPython filed here, after trying to
> catch up some, sorry about my formatting, here too.
> http://mail.python.org/pipermail/edu-sig/2010-December/010138.html
>
More information about the Python-list
mailing list