[BangPypers] My VB EXE can't make calls to Python Servers via OLE RMI technology (application was writen in the 90s)

Wah Meng Wong wah_meng at yahoo.com
Fri Dec 23 12:33:42 CET 2011

Hello there,
I am in the midst of migrating my client server applications (RMI as middleware) from python 1.5.2 to python 2.7.1. I have done up the migration on my application servers writen in pure python that runs on the UNIX platform. No issue.
Now I am encountering an issue where my client which is writen in VB EXE (using OLE RMI technology, or COM method), unable to call the application servers on UNIX successfully. The stack trace reveals that it gets stuck at this code, a TIMEOUT error is returned. It looks like it failes to invoke a COM method and the code that triggers it resides in win32com\server\policy.py file. 
My client program is run on Windows 7, and I haven't tried on Windows XP and I will try that out next week to see if I encounter the same problem.
Does anyone know if this is related to the TCP RMI call to daemon process, or it is some kind of privilege (like UAC thing in Windows 7), or security policy depicted in the policy.py perhaps? 
Hope to hear some insights on this. Thanks! 
 Collecting Python Trace Output...
Proxy called with: MatlMgr, getCompatibleFTCSVersions(), (), {}
Dec 23 18:41:21 OleRmiClient     Timeout of 300 seconds occurred on the invocati
on of ('getAppAddress', (u'MatlMgr',), {}) to ('', 26000) pythoncom error: Python error invoking COM method.
Traceback (most recent call last):
  File "C:\genesis\Enablers\Python\lib\site-packages\win32com\server\policy.py",
 line 277, in _Invoke_
    return self._invoke_(dispid, lcid, wFlags, args)
  File "C:\genesis\Enablers\Python\lib\site-packages\win32com\server\policy.py",
 line 282, in _invoke_
    return S_OK, -1, self._invokeex_(dispid, lcid, wFlags, args, None, None)
  File "C:\genesis\Enablers\Python\lib\site-packages\win32com\server\policy.py",
 line 585, in _invokeex_
    return func(*args)
  File "C:\genesis\Product\Lib\PythonOleRmi.py", line 240, in Proxy
    proxy = self._getProxyObj(pyserverString)
  File "C:\genesis\Product\Lib\PythonOleRmi.py", line 223, in _getProxyObj
    None, self._logWriter, rem_admin_addr = remAddr )
  File "C:\genesis\Product\Lib\EComponent.py", line 710, in __init__
    addr = self._getAppProxyAddress()
  File "C:\genesis\Product\Lib\EComponent.py", line 742, in _getAppProxyAddress
    addr = remAdmin.getAppAddress(self.server_name)
  File "C:\genesis\Product\Lib\EComponent.py", line 611, in __call__
    self._method, args, kw )
  File "C:\genesis\Product\Lib\RMI.py", line 1779, in _genericInvocation
    reply = self._requestReply( replyBit, (method_name, args, kw) )
  File "C:\genesis\Product\Lib\RMI.py", line 1585, in _requestReply
    reply = self._receive()
  File "C:\genesis\Product\Lib\RMI.py", line 1677, in _receive
    raise ServerReplyTimeout( self.reply_timeout)
ServerReplyTimeout: 300

More information about the BangPypers mailing list