Need help with COMObject for Zope

Toby Dickenson mbel44 at dial.pipex.net
Fri Apr 28 04:05:05 EDT 2000


tseaver at starbase.neosoft.com (Tres Seaver) wrote:

>>Add the 2 lines:
>>import pythoncom
>>pythoncom.CoInitialize()

NOOOoooooooo.......

>>before your code, and it will almost certainly work.
>>
>>The Zope guys should document this fairly well.  Note that Zope is almost
>>certainly initializing COM on a different thread than your code is being
>>called on (hence you see this message) - but there are some serious
>>implications with COM and threading.  

Yes, this is definitely a problem. Zope products can't always play by
the apartment threading rules, therefore you _must_ call
CoInitializeEx(COINIT_MULTITHREADED).

>I dont believe you will hit them here, but someone will sometime :-)
>
>We have a bug in the Collector on the COMObject project for this issue:
>
>  http://classic.zope.org:8080/Collector/842/view
>
>The bug page has three distinct workarounds:  one is essentially what
>Mark posted (it has some ugly issues, but will work, slowly, for most code);

^^^^^^^^^
>one requires hooking the thread creation to perform the CoInitialize() then;

....and works for all code ;-)



Toby Dickenson
tdickenson at geminidataloggers.com



More information about the Python-list mailing list