passing arguments to tcpserver classes
Mark T
nospam at nospam.com
Thu Jun 14 00:56:51 EDT 2007
"Eric Spaulding" <els24 at cornell.edu> wrote in message
news:mailman.9058.1181745026.32031.python-list at python.org...
> 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
More information about the Python-list
mailing list