[python-win32] Python service hangs in Dispatch when frozen with py2exe

Don Dwiggins ddwiggins at advpubtech.com
Tue May 25 00:36:52 CEST 2010


OK, I have more information that may help.  Looking into the code 
invoked by IA.clsAuthorizeBatch(), I've found that the hangup occurs in 
the call to pythoncom.new in CoClassBaseClass in 
win32com\client\__init__.py.

Interestingly, if I run the code in the "main" Twisted thread, it 
executes without a problem (this is running the source, with py2exe out 
of the picture).  If I run it in a subthread (using Twisted's 
DeferToThread) it hangs in the following call:

> oo = pythoncom.new(IA.clsAuthorizeBatch.CLSID)

.. where IA is the gen_py file, as before.  The COM DLL is implemented 
in VB with a single threaded model (although I've tried making it 
apartment threaded as well).

I can't go any deeper at the python level, since pythoncom is a DLL.

As before, any advice appreciated ...

I wrote previously:
> I'm developing a Python service under Win XP with Python 2.5 (the 
> service is built on Twisted's XMLRPC server).  For delivery to 
> production, I "compile" it with py2exe.  It's been running fine, but 
> I've hit a snag.
> 
> I've written new code to access a COM object (in a DLL); the code I've 
> written does works successfully as long as I'm running the source under 
> PythonService.
> 
> The compiled version, however, hangs up in the call to Dispatch to get 
> the COM object.  I've put in debugging log entries all through the 
> relevant section of code, and it's clear that it simply never returns 
> from the Dispatch call.  I've tried EnsureDispatch as well, and more 
> recently the following code:
> 
>>   iab = IA.clsAuthorizeBatch()
>>   auth = DispatchEx(iab.CLSID)
> 
> ... where I've imported the gen_py module under the name IA (I've copied 
> the module file to the same folder as the service, so there's no issue 
> with py2exe or the executable not being able to find it).  In this case, 
> the hangup occurs in the first statement.  I've tried running the code 
> with and without wrapping it in CoInitialize/Couninitialize.
> 
> I've run out of things I can think of to try, or even to get a hint of 
> what might be getting hung up.  One last bit of data: looking at the 
> process in Process Explorer, I see that it's very busy for several 
> seconds (about 50% CPU), then goes quiet.
> 
> Any good words appreciated,



More information about the python-win32 mailing list