首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - BaseHTTPServer -覆盖"handle_timeout“方法

Python - BaseHTTPServer -覆盖"handle_timeout“方法
EN

Stack Overflow用户
提问于 2016-08-25 18:29:41
回答 1查看 1.3K关注 0票数 0

我目前正在使用Python的BaseHTTPServer,我需要覆盖服务器的handle_timeout()方法。

根据Python的文档(https://docs.python.org/2/library/basehttpserver.html),BaseHTTPServer是TCPServer的一个子类。TCPServer实现了我想要覆盖的方法handle_timeout (timeout)。

我的代码目前看起来如下:

代码语言:javascript
复制
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)

超时本身工作,我从服务器收到以下消息:

代码语言:javascript
复制
Request timed out: timeout('timed out',)

问题是,这不是我想要打印的信息。对我的问题有帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-30 13:31:01

对任何感兴趣的人来说,在尝试了几件事之后,我终于得出了一个结论:

根据这个文件(https://svn.python.org/projects/python/trunk/Lib/BaseHTTPServer.py),我直接从BaseHTTPRequestHandlerhandle_one_request-method复制了代码,并重写了最后几行代码以使代码工作。

我的所有其他尝试(在服务器类中重写它,在请求处理程序或main-method中捕获异常)似乎都不起作用。

希望这能帮到别人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39152411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档