Tengo una aplicación que se ejecuta en Heroku que, en ocasiones, los informes de Tiempo de espera :: error y (ActionView :: :: Plantilla de error) "ejecución caducado".manija tiempo de espera :: Error con reintento
Esto ocurre en todo el sitio web (es decir, no en un controlador específico) así que me gustaría crear una función que manejará estos dos errores, primero volviendo a intentar dos veces y redirigir al usuario a una página que les dirá que el servidor está ocupado
Mi plan actual es utilizar el siguiente en ApplicationController:
rescue_from Timeout::Error, :with => :rescue_from_timeout
def rescue_from_timeout
sleep 2
retry
end
pero esto acaba de bucle y bucle. Quiero que se rompa después de dos intentos. ¿Cómo puedo hacer eso?
Además, ¿cómo puedo manejar ActionView :: Template :: Error para "ejecución expirada"? No quiero rescatar todo ActionView :: Template :: Error con reintentos, solo los que provocan la "expiración de la ejecución".
Esto es lo que mi excepción dice:
[Exception] home#index (ActionView::Template::Error) "execution expired"
o
[Exception] calculations#result (ActionView::Template::Error) "Timeout::Error: execution expired
Mi pregunta, por lo tanto: ¿Cómo puedo manejar estos dos tipos de errores de primer reintento dos veces y luego una excepción/redirigir a la página de error?
¿Por qué se plantea esta excepción? ¿Ha implementado algún tipo de tareas de larga ejecución? ¿Depende su aplicación de un servicio web externo? – Jef