gpt4 book ai didi

tornado - 优雅地处理 Tornado 应用程序中的应用程序异常

转载 作者:行者123 更新时间:2023-12-02 03:35:59 31 4
gpt4 key购买 nike

根据一些谷歌搜索,我安装了以下错误处理程序。然而,似乎返回 http 500 的 python 异常并没有被这些东西捕获,尽管 404 是这样。通过我在下面的代码中留下的打印语句,我可以看到它没有命中任何这些例程。我到底应该做什么?

class ErrorHandler(tornado.web.RequestHandler):
"""Generates an error response with status_code for all requests."""
def __init__ (self, application, request, status_code):
print 'In ErrorHandler init'
tornado.web.RequestHandler.__init__(self, application, request)
self.set_status(status_code)

def get_error_html (self, status_code, **kwargs):
print 'In get_error_html. status_code: ', status_code
if status_code in [403, 404, 500, 503]:
filename = '%d.html' % status_code
print 'rendering filename: ', filename
return self.render_string(filename, title=config.get_title())

return "<html><title>%(code)d: %(message)s</title>" \
"<body class='bodyErrorPage'>%(code)d: %(message)s</body>"\
"</html>" % {
"code": status_code,
"message": httplib.responses[status_code],
}

def prepare (self):
print 'In prepare...'
raise tornado.web.HTTPError(self._status_code)

最佳答案

首先,您在 prepare 中引发的异常的代码为 200,因此它不会在 get_error_html 函数中捕获。

其次,get_error_html 已弃用:使用 write_error 代替 ( write_error )。

最后,您不需要在 ErrorHandler 上调用 __init__:使用 initialize ( initialize ) 来初始化处理程序,但是在这种情况下你不需要它。

这是一个工作示例:

import tornado
import tornado.web


class ErrorHandler(tornado.web.RequestHandler):
"""Generates an error response with status_code for all requests."""

def write_error(self, status_code, **kwargs):
print 'In get_error_html. status_code: ', status_code
if status_code in [403, 404, 500, 503]:
self.write('Error %s' % status_code)
else:
self.write('BOOM!')

def prepare(self):
print 'In prepare...'
raise Exception('Error!')


application = tornado.web.Application([
(r"/", ErrorHandler),
])

if __name__ == "__main__":
application.listen(8899)
tornado.ioloop.IOLoop.instance().start()

关于tornado - 优雅地处理 Tornado 应用程序中的应用程序异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11392952/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com