Ich habe die folgenden zwei Python-Klassen kommunizieren:Wie aus den Request-Handler auf einen Socket Server
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()
Wenn also der Client sendet "shutdown", der Server selbst Abschaltung sollte. Als Workaround setze ich die globale Variable SERVER
auf das Objekt MyServer
, dann rufe ich SERVER.shutdown
in einem anderen Thread auf, wie oben gezeigt.
Aber die Verwendung einer globalen Variablen ist hässlich. Wie kann ich also direkt vom Request-Handler mit dem Socket-Server kommunizieren?