如何从请求处理程序与套接字服务器进行通信

时间:2016-03-28 23:21:54

标签: python sockets

我有以下两个Python类:

import socketserver

class MyServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    def __init__(self, server_address):
        socketserver.TCPServer.__init__(self, server_address, MyTcpHandler)
        self.allow_reuse_address = True
        self.serve_forever()

class MyTcpHandler(socketserver.BaseRequestHandler):
    data = ""

    def handle(self):
        self.data = self.request.recv(BUFF_SIZE).strip()
        if self.data == b"shutdown":
            self.request.close()
            import threading
            threading.Thread(target=SERVER.shutdown).start()

因此,当客户端发送" shutdown"时,服务器本身应该关闭。作为一种解决方法,我将全局变量SERVER设置为MyServer对象,然后在另一个线程中调用SERVER.shutdown,如上所示。

但是使用全局变量很丑陋。那么如何直接从请求处理程序与套接字服务器进行通信呢?

1 个答案:

答案 0 :(得分:0)