tcp - send a variable to a TCPHandler in python -
i'm confused how send variable tcphandler using socketserver.tcpserver in python..
host, port = hosts[0], args.port server = socketserver.tcpserver((host, port), metcphandler) server.serve_forever()
which calls:
class metcphandler(socketserver.baserequesthandler): def handle(self): self.data = self.request.recv(1024).strip() print "{} wrote:".format(self.client_address[0]) r = mexpresshandler(self.data, false)
but want pass debug boolean mexpresshandler.. so
host, port = hosts[0], args.port server = socketserver.tcpserver((host, port), metcphandler(debug)) server.serve_forever()
fails. whats correct way of doing this? have recreate whole tcphandler over-ridding __init__
?
trust instincts, correct way is indeed subclass tcpserver , override __init__
method, python makes easy!
import socketserver class debugtcpserver(socketserver.tcpserver): def __init__(self, server_address, requesthandlerclass, bind_and_activate=true, debug=true): self.debug = debug socketserver.tcpserver.__init__(self, server_address, requesthandlerclass, bind_and_activate=true) class debugmetcphandler(socketserver.baserequesthandler): def handle(self): # self.server instance of debugtcpserver debug = self.server.debug self.data = self.request.recv(1024).strip() if debug: print "{} wrote:".format(self.client_address[0]) r = mexpresshandler(self.data, false) server = debugtcpserver((host, port), debugmetcphandler, debug=true)
or since specified debug=true
default:
server = debugtcpserver((host, port), debugmetcphandler)
Comments
Post a Comment