[mod_python] Mod_Python and win32com

Ryan Felder rfelder at globaltecsolutions.com
Wed Feb 11 13:28:34 EST 2004


Okay, I've got my problem solved. The trouble was that the com
object I was polling for data was getting it from a running application.
Due to the default permissions enforced upon Apache by windows, this
behaviour
is restricted. The solution, I found, was to modify my Apache service's
properties, and set the "Allow service to interact with the desktop" check.



-----Original Message-----
From: David Fraser [mailto:davidf at sjsoft.com]
Sent: Tuesday, February 10, 2004 1:04 AM
To: Ryan Felder
Cc: mod_python at modpython.org
Subject: Re: [mod_python] Mod_Python and win32com


Ryan Felder wrote:

>Hi all, I'm pretty new to working with Mod_Python, and the project I am
>working on requires me to be able to poll for some data through COM.
>
>I am developing in windows 2000 professional, and will be running
>my code on windows apache 2.0 with mod python. More specifically,
>I am using the distribution of apache ssl and others named Swamp.
>
>The code works fine when I run it standalone, however, when I attempt
>to run it on my development site, the calls to the com object that work
>beautifully alone, simply fail to return data. As follows is a brief
>code sample which demonstrates this behaviour. This code functions
>properly from a command prompt or in the interpreter.
>
>def index():
>	import win32com.client
>	a=win32com.client.Dispatch('MyDataSource')
>	b=str(a.GetOrders(account_identifier,'',2,0))
>	return str(len(b))
>
>if __name__ == "__main__":
>	print index()
>
>When this code runs standalone, it will return a non-zero value,
>and when run from mod_python, it returns a zero value, due to
>the len() function measuring the length of the output of my data call.
>
>By way of typos, I have been able to produce exceptions in my testing
>browser, so this leads me to believe that it is not passing any exceptions.
>
>My research online has suggested that I try importing my modules through
>apache.import_module. This gives me a number of different issues where
>if I instantiate an instance of win32com, then try to address
>that.client.Dispatch,
>I recieve "module does not have 'client'", or similarly, if I try to
>instantiate
>an instance of win32com.client, I recieve "module does not have
'Dispatch'".
>
>I have also seen it suggested that I initialize the com properly, and
>manually,
>by
>	import sys
>	sys.coinit_flags = 0
>
>as well as
>
>	import pythoncom
>	pythoncom.CoInitializeEx(pythoncom.COINIT_MULTITHREADED)
>
>which I do before attemting to import win32com, but to no avail,
>in many, and in all permutations.
>
>I have tried every permutation of apache.import_module and import,
>that I can muster, and I am hitting a brick wall.
>
>It seems that there is a breakdown in communications between myself and the
>com objects when I try to import them. Any help that you all can offer me
>would be hugely appreciated!
>
>- Ryan
>
>
This sounds wierd
We use win32com.client without any problems from within mod_python (also
using similar versions to you, but Python 2.2).
Which version of win32all are you using? It may be interesting to try
stepping into the win32com code and adding traces, to see whether the
COM call is actually made and nothing is returned, or whether it never
gets there and isn't producing an error though it should be.

David




More information about the Mod_python mailing list