2016-08-25 6 views
0

현재 파이썬의 BaseHTTPServer으로 작업 중이며 서버의 handle_timeout() 메서드를 재정의해야합니다.Python - BaseHTTPServer - "handle_timeout"메서드 재정의

Python의 설명서 (https://docs.python.org/2/library/basehttpserver.html)에 따르면 BaseHTTPServer는 TCPServer의 하위 클래스입니다. TCPServer는 내가 대체하고자하는 handle_timeout (https://docs.python.org/2/library/socketserver.html#SocketServer.BaseServer.handle_timeout) 메소드를 구현합니다.

내 코드는 다음과 같이 현재 같습니다

class newServer(BaseHTTPServer.HTTPServer): 

def handle_timeout(self): 
    print "Timeout!" 

class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): 

def setup(self): 
    self.timeout=2 
    BaseHTTPServer.BaseHTTPRequestHandler.setup(self) 


if __name__ == '__main__': 

server=newServer 

httpd = server((HOST_NAME, PORT_NUMBER), RequestHandler) 
print time.asctime(), "Server Starts - %s:%s" % (HOST_NAME, PORT_NUMBER) 
try: 
    httpd.serve_forever() 
except KeyboardInterrupt: 
    pass 


httpd.server_close() 
print time.asctime(), "Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER) 

자체가 작동하는 시간 제한, 내가 서버에서 다음과 같은 메시지가 나타납니다이 메시지가 아니라고,

Request timed out: timeout('timed out',) 

문제는 I 인쇄하고 싶다. 내 문제에 도움이 되셨습니까? 관심있는 사람들을위한

답변

0

는, 몇 가지를 시도 후, 나는 마침내 결론에 도달 :이 파일 (https://svn.python.org/projects/python/trunk/Lib/BaseHTTPServer.py)에 따르면

, 내가 직접 BaseHTTPRequestHandlerhandle_one_request -method의 코드를 복사 마지막을 재정의 마침내 내 코드를 작동시키는 몇 줄.

다른 모든 시도 (서버 클래스에서 재정의하고 요청 처리기 또는 main- 메서드에서 예외를 catch 함)가 작동하지 않는 것 같습니다.

가끔은 누군가를 도울 수 있기를 바랍니다.