"Eric Spaulding" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Is there an easy way to pass arguments to a handler class that is used by > the standard TCPServer? > > normally --> srvr =SocketServer.TCPServer(('',port_num), TCPHandlerClass) > > I'd like to be able to: srvr =SocketServer.TCPServer(('',port_num), > TCPHandlerClass, (arg1,arg2)) > > And have arg1, arg2 available via TCPHandlerClass.__init__ or some other > way. > > Where TCPHandlerClass: > > class TCPHandlerClass(SocketServer.StreamRequestHandler): > def handle(self): > #handle stream events here# > > > Thanks for any advice. >
In the handler class, self.server refers to the server object, so subclass the server and override __init__ to take any additional server parameters and store them as instance variables. import SocketServer class MyServer(SocketServer.ThreadingTCPServer): def __init__(self, server_address, RequestHandlerClass,arg1,arg2): SocketServer.ThreadingTCPServer.__init__(self,server_address,RequestHandlerClass) self.arg1 = arg1 self.arg2 = arg2 class MyHandler(SocketServer.StreamRequestHandler): def handle(self): print self.server.arg1 print self.server.arg2 if __name__ == '__main__': srv = MyServer(('',5000),MyHandler,123,456) srv.serve_forever() --Mark -- http://mail.python.org/mailman/listinfo/python-list