저는 SocketServer.TCPServer 및 SocketServer.BaseRequestHandler 기본 클래스를 사용하여 Python 서버를 개발해 왔습니다. 호스트 "localhost"와 포트 2304 (다른 프로그램에서는 사용하지 않음)를 사용하고 있습니다.Python SocketServer.BaseRequestHandler가 원격 요청과 통신하지 않습니다.
문제는 내 서버가 원격 요청에 응답하지 않는다는 것입니다. 저는 Amazon AWS를 사용 중이며 액세스를위한 고정 IP 주소를 가지고 있습니다.
예를 들어 Amazon 로컬 시스템에서 서버를 테스트 할 때. 브라우저, 내 서버에 문제가 없지만 원격 액세스는 차단 된 상태로 유지됩니다. 2304 포트를 열어 외부 로컬 시스템에서 액세스 할 수있는 단서가 없습니다.
import threading, socket
import SocketServer, Queue
import globals
import transaction_pool
class CTSRSThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
if globals.terminating:
self.Respond("")
pCurrThread = threading.currentThread()
sData = self.request.recv(8192)
print "CTSRSThreadedTCPRequestHandler->RECV->OK!"
sResponse = "OK!"
self.Respond(sResponse)
print "CTSRSThreadedTCPRequestHandler->SEND->OK!"
#-------------------------------------------------------------------------
def Respond(self, sResponse):
self.request.send(sResponse)
#-------------------------------------------------------------------------
class CTSRSThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
allow_reuse_address = True
class CTSRSServer:
m_pServerThread = None
m_pServer = None
#----------------------------------------------------------
def StartServer(self):
try:
self.m_pServer = CTSRSThreadedTCPServer(("localhost", 2304), CTSRSThreadedTCPRequestHandler)
sIP, iPort = self.m_pServer.server_address
self.m_pServerThread = threading.Thread(target = self.m_pServer.serve_forever)
self.m_pServerThread.daemon = True
self.m_pServer.daemon_threads = True
self.m_pServerThread.start()
globals.system_log.info("[CTSRS]->StartServer()")
except Exception, e:
globals.system_log.info("[CTSRS]->StartServer() -> Exception: " + str(e))
return False
return True
#----------------------------------------------------------
def StopServer(self):
globals.system_log.info("[CTSRS]->StopServer()")
#----------------------------------------------------------
어떻게합니까? 일반 "캐치 올"인터페이스에 바인드 하시겠습니까? – StjepanV
Pileborg 씨 감사합니다! 훌륭하게 작동합니다! – StjepanV