Me gustaría capturar y manejar DeadlineExceededError para que los usuarios no vean la página estándar "Error del servidor" que App Engine arroja por defecto.¿Cómo puedo configurar un controlador global DeadlineExceededError?
Sé que DeadlineExceededErrors es not caught when overriding handle_exception en el controlador de la solicitud (ya lo hacemos).
He intentado, sin éxito hasta el momento, para utilizar el custom error_handlers app.yaml configuration así:
error_handlers:
- error_code: timeout
file: timeout.html
... pero eso tampoco parece atrapar DeadlineExceededErrors, a menos que yo estoy haciendo algo mal.
Soy consciente de que puedo usar el siguiente patrón de atrapar DeadlineExceededErrors dentro de determinados controladores de solicitudes:
class MainPage(webapp.RequestHandler):
def get(self):
try:
# Do stuff...
except DeadlineExceededError:
# Many Whelps! Handle it!
... pero me gustaría evitar la adición de esto a cada controlador de solicitudes sola en mi solicitud.
¿Cómo puedo atrapar globalmente estos retoños escurridizos?
En webapp2, podría configurar un controlador de errores para manejar código de estado 500 - utilizan sobre todo para las excepciones no capturadas. Allí, compruebe qué tipo de excepción es y maneje en consecuencia: if isinstance (exception, DeadlineExceededError): ... Los documentos están aquí: http://webapp-improved.appspot.com/guide/exceptions.html#exceptions-in- the-wsgi-app – moraes
En realidad, no lo sabía; sí, ese sería un lugar más apropiado para poner el manejo del error. –
Esto es lo que sugeriría. Por favor, no envíe redirecciones por errores, sírvanse: publique la página de error en la misma URL. –