RE: keeping a COM server alive
Hi, there is no real solution if you are using a standard local server. The server is as a COM object reference counted. So if the reference count reaches 0 (no client) it will shutdown itself which is done by design. If you want a different behavior you should write either a service which exports COM objects and is started by the operating system or a Python script which you start by hand, registers the class factories and then does not shut down. Stefan -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of [EMAIL PROTECTED] Sent: Monday, February 14, 2005 12:53 PM To: python-list@python.org Subject: keeping a COM server alive 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) -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: keeping a COM server alive
Hi, thanks, I 'll post the problem in python-win32@python.org ... Frank -- http://mail.python.org/mailman/listinfo/python-list
Re: keeping a COM server alive
Do Re Mi chel La Si Do wrote: Hi ! I had also make a Python-COM-server. But, when I launch several clients, I obtain several instances of my COM-server. Finally, there are advantages and disadvantages in this established fact. But I can't use this way for to exchange data between several clients. For that, I use a TCP local server. There are settings you can establish to determine the interactions between the COM server and its clients (threading model, in-process or out-of-process, etc). If you don't get an answer on this list, try python-win32@python.org as a list where the readers will be more directly in tune with your needs. regards Steve -- http://mail.python.org/mailman/listinfo/python-list
Re: keeping a COM server alive
Hi ! Sorry, but I receive the mailing list, I had readed THE book (Prog...Win32), I questioned M.Hammond, I traversed the archives... But I have no solution. And, also, a COM server which answers several clients is very smart to design; in particular because of the temporal re-entry (re-entrance ?) @-salutations -- Michel Claveau -- http://mail.python.org/mailman/listinfo/python-list
Re: keeping a COM server alive
Hi ! I had also make a Python-COM-server. But, when I launch several clients, I obtain several instances of my COM-server. Finally, there are advantages and disadvantages in this established fact. But I can't use this way for to exchange data between several clients. For that, I use a TCP local server. @-salutations -- Michel Claveau note : the same problem come with Microsoft's dictionnary COM server. -- http://mail.python.org/mailman/listinfo/python-list