gpt4 book ai didi

python - 将变量发送到python中的TCPHandler

转载 作者:可可西里 更新时间:2023-11-01 02:47:14 27 4
gpt4 key购买 nike

我对如何在 python 中使用 SocketServer.TCPServer 将变量发送到 TCPHandler 感到困惑。

HOST, PORT = hosts[0], args.port
server = SocketServer.TCPServer((HOST, PORT), METCPHandler)
server.serve_forever()

调用:

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)

但我想将调试 bool 值传递给 MExpressHandler.. 所以

HOST, PORT = hosts[0], args.port
server = SocketServer.TCPServer((HOST, PORT), METCPHandler(debug))
server.serve_forever()

失败。这样做的正确方法是什么?我是否必须重新创建整个 TCPHandler 覆盖 __init__

最佳答案

相信您的直觉,正确的方法确实是继承 TCPServer 并覆盖 __init__ 方法,但是 Python 使这变得非常简单!

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 is an instance of the 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)

或者因为我们将 debug=True 指定为默认值:

server = DebugTCPServer((HOST, PORT), DebugMETCPHandler)

关于python - 将变量发送到python中的TCPHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15889241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com