如何将额外信息传递给请求处理程序实例?

时间:2016-03-16 17:04:09

标签: python python-3.x design-patterns socketserver

是否有标准方法可以从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()

0 个答案:

没有答案