UDP SocketServer를 만들고 있는데 UDP 연결을 닫으려는 것보다 클라이언트 쪽에서 닫는 메시지를받는다면 종료하고 싶습니다.Stop UDP SocketServer
메시지를 받으면 Begin
이 표시되지만 Finished
은 표시되지 않습니다. 이 스레드에서 어떻게 종료 할 수 있습니까? 이 교착 원인이됩니다
class MyUDPHandler(SocketServer.BaseRequestHandler):
def handle(self):
data = self.request[0].strip()
dic = self.string_XML_to_dic(data)
if(dic['Cmd'] == str(UDPConst().SHUT_DOWN)):
print('Begin')
self.server.shutdown()
print("Finished")
if __name__ == "__main__":
HOST, PORT = "", prop['udpport']
server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler)
server.serve_forever()
http://docs.python.org/library/socketserver.html shutdown()에 대해 다음과 같이 명시합니다. "serve_forever() 루프가 중지 될 때까지 기다렸다가 기다려주십시오." 청소 및 종료를 수행하는 데 얼마나 오래 기다리고 계십니까? – jlafay