2016-03-28 19 views
0

Ben şu iki Python sınıfları için talep Besleyicideki iletişim için: istemci "kapatma" gönderirbir Soket Sunucusu

Böylece
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() 

, kendisi kapatma gerektiği sunucusu. Bir geçici çözüm olarak SERVER genel değişkenini MyServer nesnesine ayarlıyorum, daha sonra yukarıda gösterildiği gibi başka bir iş parçacığında SERVER.shutdown numaralı telefonu arayın.

Ancak bir global değişken kullanarak cehennem kadar çirkin. Peki, doğrudan istek işleyicisinden soket sunucusuyla nasıl iletişim kurabilirim?

cevap