class CustomHandler(tornado.web.RequestHandler):
def write_error(self, status_code, **kwargs):
err_cls, err, traceback = kwargs['exc_info']
if err.log_message and err.log_message.startswith(custom_msg):
self.write("<html><body><h1>Here be dragons</h1></body></html>")
def write_error(self, status_code, **kwargs):
if self.settings.get("serve_traceback") and "exc_info" in kwargs:
# in debug mode, try to send a traceback
self.set_header('Content-Type', 'text/plain')
for line in traceback.format_exception(*kwargs["exc_info"]):
self.write(line)
self.finish()
else:
self.set_status(status_code)
if kwargs['reason']:
self.finish(kwargs['reason'])
else:
self.finish("<html><title>%(code)d: %(message)s</title>"
"<body>%(code)d: %(message)s</body></html>" % {
"code": status_code,
"message": self._reason,
})
您可以模拟^{} 方法:
最好使用标准接口并在
HTTPError
上定义自定义消息。然后,可以分析
RequestHandler
中的错误并检查消息:Tornado调用^{} 来输出错误,因此VisioN's approach的替代方法是根据Tornado的建议重写它。这种方法的优点是它将允许您像以前一样提高
HTTPError
。RequestHandler.write_error
的源是here。下面您可以看到一个简单修改write_error的示例,如果您以kwargs格式提供原因,该修改将更改设置状态代码并更改输出。相关问题 更多 >
编程相关推荐