2016-08-25 13 views
0

私は現在PythonのBaseHTTPServerで作業しており、サーバのhandle_timeout()メソッドをオーバーライドする必要があります。Python - BaseHTTPServer - "handle_timeout"メソッドをオーバーライド

Pythonのドキュメント(https://docs.python.org/2/library/basehttpserver.html)によると、BaseHTTPServerはTCPServerのサブクラスです。 TCPServerは、私がオーバーライドしたいメソッドhandle_timeouthttps://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メソッドで例外をキャッチしても)うまくいかなかったようです。

これは時々誰かを助けることができますか?

関連する問題