Hi Gabriel,
News123 wrote: > Hi Gabriel, > > Gabriel Genellina wrote: >> En Fri, 05 Feb 2010 20:03:51 -0300, News123 <news...@free.fr> escribió: >> >>> I'm using an XMLRPC server under Windows. >>> >>> What I wonder is how I could create a server, that can be killed with >>> CTRL-C >>> >>> The server aborts easily with CTRL-BREAK but not with CTRL-C (under >>> Windows) >>> >>> If I press CTRL-C it will only abort when the next RPC call occurs. >>> It seems it is blocking in the select() call in the handle_request() >>> function. >> Python 2.6 and up behaves exactly as you want. >> On previous versions you may use this: >> >> class MyXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer): >> >> ... your methods ... >> >> if not hasattr(SimpleXMLRPCServer.SimpleXMLRPCServer, 'shutdown'): >> >> # pre 2.6 >> quit = False >> >> def serve_forever(self): >> while not self.quit: >> self.handle_request() >> >> def shutdown(self): >> self.quit = True >> >> def server_bind(self): >> self.socket.settimeout(1.0) >> SimpleXMLRPCServer.SimpleXMLRPCServer.server_bind(self) >> > > Overloading server_bind() with your version solved my problem. > Overloading server_bind() makes the server killable with ctrl-C. I noticed however, that I can't use this as solution. If the bind function sets a time out, then it seems, that there are regular small time windows, when connecting clients fail. I don't have the error message any more, but will post it when I capture the event next time. bye N -- http://mail.python.org/mailman/listinfo/python-list