Pregunta

¿Es posible crear un cajón de sastre de gestión de excepciones global en Google App Engine usando Python?

Básicamente, quiero capturar todas las excepciones de la ONU capturados y con gracia manejarlo, al enviar un correo electrónico con el rastreo a mí.

En la actualidad, para todos los errores sin capturar, los usuarios ver un StackTrace con un fragmento de código en el mismo. Esto no es deseable.

¿Fue útil?

Solución

Sí, es posible.
Puede hacerlo utilizando el href="http://code.google.com/intl/it/appengine/articles/python/recording_exceptions_with_ereporter.html" rel="noreferrer"> ereporter paquete que permite recibir informes de excepción de su solicitud por correo electrónico.

Ereporter informará dos tipos de excepciones:

  • excepciones registra con logging.exception('Your handled exception')
  • las excepciones no capturadas

Para capturar todas las excepciones, que crearía una clase personalizada BaseHandler anulando la handle_exception () método ; todos los controladores de solicitudes deben heredar de esta clase Base.
Echar un vistazo a las respuestas de errores personalizados también.

Aquí está un ejemplo sencillo de la clase BaseHandler:

class BaseHandler(webapp.RequestHandler):

    def handle_exception(self, exception, debug_mode):
        if debug_mode:
            webapp.RequestHandler.handle_exception(self, exception, debug_mode)
        else:
            logging.exception(exception)
            self.error(500)
            self.response.out.write(template.render('templdir/error.html', {}))

Otros consejos

Es posible que desee llamar a la handle_exception original, llamando al siguiente en su BaseHandler:

webapp.RequestHandler.handle_exception(self, exception, debug_mode)

Aquí está en contexto.

from google.appengine.ext import webapp
import sys
import traceback

class BaseHandler(webapp.RequestHandler):
    def handle_exception(self, exception, debug_mode):
        from main import emaildevs
        emaildevs('An error occurred on example.com', ''.join(traceback.format_exception(*sys.exc_info())))
        webapp.RequestHandler.handle_exception(self, exception, debug_mode)

Proveedores:   llamada excepto:   SendEmail

http://docs.python.org/tutorial/errors.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top