我有以下两个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
,如上所示。
但是使用全局变量很丑陋。那么如何直接从请求处理程序与套接字服务器进行通信呢?
答案 0 :(得分:0)
根据此处https://docs.python.org/2/library/socketserver.html#SocketServer.BaseRequestHandler.handle
的Python文档,服务器可用self.server