Я использую Tornado в качестве асинхронного сервера приложений (не WSGI). Мне нужно отлавливать все ошибки сервера для всех определенных конечных точек API / обработчиков торнадо (например, 500 Internal Server Error), so I added this
ErrorHandler` класса (согласно здесь )
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
import handlers as th
from tornado import web
class ErrorHandler(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!')
def application():
handlers = [
# Catch all Error handler
(r"/", ErrorHandler),
(r'/data', th.customHandler)
]
settings = dict()
return web.Application(handlers, **settings)
Но это не работает. Когдавызов конечной точки /data
с customHandler
, вызывающим ошибку 500 Я все еще получаю
<html>
<title>500: Internal Server Error</title>
<body>500: Internal Server Error</body>
</html>