I'm trying to passing some parameter to the server tread, but I have no idea how?
this is my code:
HOST, PORT = socket.gethostbyname( socket.gethostname() ), 31000
self.server = SocketServer.ThreadingTCPServer( ( HOST, PORT ), MCReque开发者_如何学JAVAstHandler )
ip, port = self.server.server_address
self.server_thread = threading.Thread( target = self.server.serve_forever )
this is the MCRequestHandler
class MCRequestHandler( SocketServer.BaseRequestHandler ):
global Lidars, clientsLock, postbox
Lidars = []
postbox = {}
clientsLock = threading.RLock()
def setup( self ):
clientsLock.acquire()
How can I pass one or two parameter to the MCRequestHandler class?
I think the second parameter of ThreadingTCPServer is a factory:
SocketServer.ThreadingTCPServer( ( HOST, PORT ), MCRequestHandler )
What you could do is your own factory here. Class will contstuct a callable object. when the object is called it will initialize MCRequestHandler with parameters given to the factory:
class MyRequestHandlerFactory(object):
def __init__(self, param1, param2):
self.param1 = param1
self.param2 = param2
def __call__(self):
handler = MCRequestHandler()
handler.param1 = param1
handler.param2 = param2
Then initialize:
factory = MyRequestHandlerFactory("x", "y")
SocketServer.ThreadingTCPServer( ( HOST, PORT ), factory)
精彩评论