是否有标准方法可以从socketserver
模块向处理程序提供额外信息?以下是关于我能想到的最简单的解决方案,但是这是确保处理程序可以访问他们可以共享的一些资源的最佳方法,这是不可信的。
#! /usr/bin/env python3
import socketserver
def main():
address = 'localhost', 10000
history = [b'Hello, world!']
server = CustomUDPServer(address, UDPHandler, history)
server.serve_forever()
class CustomUDPServer(socketserver.UDPServer):
def __init__(self, server_address, RequestHandlerClass, history):
super().__init__(server_address, RequestHandlerClass)
self.history = history
class UDPHandler(socketserver.DatagramRequestHandler):
def handle(self):
self.wfile.write(self.server.history[-1])
self.server.history.append(self.rfile.read())
if __name__ == '__main__':
main()