Cómo manejar excepciones con el motor de aplicaciones de Google

He estado usando GAE durante más de un año, y una de las cosas más difíciles de manejar para mí es el hecho de que mi código, por lo demás bien escrito, ocasionalmente puede generar una excepción debido a un problema con GAE.

Ya tengo un procedimiento decente para excepciones no controladas. Mi controlador de solicitudes personalizado presenta una bonita página de error y los administradores reciben un correo electrónico. Esto, sin embargo, es una mala experiencia de usuario.

Lo que quiero hacer es encargarse de excepciones para que pueda tomar la acción apropiada de inmediato y evitar alguna página de error genérica.

Mis preguntas son las siguientes:

  1. ¿Qué excepciones debo atrapar?
  2. ¿Dónde debo atraparlos?

Me doy cuenta de que una respuesta completa a esto no es práctica, pero estoy buscando algunas mejores prácticas para las situaciones más comunes.

Para las excepciones que debo capturar, a veces veo excepciones que no están en el lista oficial. Por ejemplo, he recibido un UnknownError.

Para saber dónde detectar las excepciones, me pregunto si debo detectarlas en cada método de obtención/publicación. Algo como esto:

def get(self):
    try:
        # normal get processing
    except SomeException:
        # redirect to the same page to try again and fix any data if necessary

Me sorprende que no haya más información sobre esto, ya que es un aspecto importante de cualquier aplicación GAE. hay algunos buenos articulos aquí y aquí, pero estos no responden a mis preguntas.

preguntado el 30 de junio de 12 a las 18:06

1 Respuestas

¿Qué excepciones debo atrapar?

Eso depende del nivel de detección de errores que esté buscando. Según mi experiencia, detectar los errores en la lista oficial y los artículos vinculados le dará un nivel muy alto de detección de errores. Si necesita ir más allá, incluir una excepción genérica sería más fácil que tratar de predecir errores desconocidos.

¿Dónde debo atraparlos?

El (los) lugar(es) más probable(s) para los errores de GAE es cuando se interactúa con la base de datos, por lo que establecer algunos bloques de prueba y excepción allí si no lo ha hecho le dará un buen retorno de su esfuerzo para lidiar con el manejo de errores de problemas de GAE.

Además de los consejos de sus artículos vinculados, también puede pensar en poner las operaciones fallidas en una cola de tareas. Cada tarea se volverá a intentar automáticamente 5 veces antes de fallar, lo que puede brindarle cierta capacidad para superar los cambios del almacén de datos u otras interrupciones del servicio si no necesita comentarios inmediatos de la operación.

Respondido 04 Jul 12, 00:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.