Python Поймай все ошибки в Tornado Web Server - PullRequest
0 голосов
/ 24 октября 2019

Я использую 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>
...