Sulla base di alcuni googling ho installato il seguente gestore degli errori. Comunque le eccezioni python che sembrano restituire un http 500 non sono intrappolate da questa roba, sebbene lo siano 404. Con le dichiarazioni di stampa che ho lasciato nel codice qui sotto, posso vedere che non ha colpito nessuna di queste routine. Cosa dovrei fare davvero?Gestire con garbo le eccezioni dell'applicazione in un'applicazione Tornado
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)
Iboola, grazie per la risposta. Dichiarando un metodo write_error() per gli hanlder sono in grado di intrappolare i 500; tuttavia questo approccio non funziona davvero per gestire gli 404 attraverso il sito! Quindi ho dovuto combinare una classe globale di gestori degli errori che ho assegnato a tornado.web.ErrorHandler, oltre a una classe base con un metodo write_error() come suggerito da voi. Ora sono in grado di catturare le eccezioni della mia applicazione, oltre agli 404 globali. – Karra