keeping a COM server alive

xeoicq at netscape.net xeoicq at netscape.net
Mon Feb 14 06:53:23 EST 2005


I have implemented a local COM Server with win32com framework where all
clients
use the same global object (test_obj). So far it works, but when the
last client
is closed the gobal object is deleted because the pythonw.exe is
closed. When I
create a new client a new pythonw process is started. I need that the
new client
gets the same global object. How can I prevent the Python COM
enviornment
(pythonw.exe) to close when no client exist. I figured out a
workaround, but
there must be real solution to the problem.



The code looks like:

class test:
    ...

test_obj=test()


class test_F:

    _reg_clsid_ = ...
    _reg_progid_ = "test.cl"
    _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
    _public_methods_ = ...


    def __init__(self):
        self.delegate=test_obj
        ....
    ...


####Workaround to keep the local server alive
if not __name__=='__main__':
    import win32com.client
    dummy=win32com.client.Dispatch("test.cl")
##########################################################


if __name__=='__main__':
    import win32com.server.register
    win32com.server.register.UseCommandLine(test_F, debug=0)




More information about the Python-list mailing list