2012-10-05 32 views
8

Mi trabajo de back-end está trabajando sobre la base del trabajo cron (cada 4 horas). Pero termina sin procesar los datos. Las pantallas de registro del servidor de la siguiente manera:GAE: Proceso finalizado porque el servidor tardó demasiado en cerrarse en el trabajo de back-ends

500 15377121ms 0kb instance=0 AppEngine-Google; (+http://code.google.com/appengine) 
E 2012-10-05 01:50:18.044 Process terminated because the backend took too long to shutdown. 

Cómo manejar este tipo de error en mi programa

Respuesta

5

se genera este error cuando App Engine necesita cerrar su base de abajo, pero el servidor no puede salir en 30 segundos . Algunas razones por las que esto podría estar sucediendo están en la lista here. Dependiendo del tipo de error, App Engine puede estar enviando a su servidor una notificación del cierre inminente, por lo que es una buena idea llamar al register a shutdown handler para que pueda reunir más datos sobre el estado de su aplicación cuando esto esté por suceder.

Si está viendo esto con regularidad, probablemente exista una explicación sistemática, como que la memoria de su trabajo exceda el máximo para la clase del servidor.

+0

Agregar el controlador de sutdown no ayudó en mi aplicación. Estoy usando python2.7 webapp con un back-end. Appengine muestra este mensaje en los registros el 95% del tiempo. El manejador fue invocado solo 2-4 veces durante la última semana. Cuando fue invocado, el backend funcionó para terminar. El registro de la memoria y el uso del procesador se muestra dentro de los límites. No se garantiza que se llamen a los controladores de cierre a partir de una conversación de google io en servidores de respaldo. –

0

Tratando con el mismo problema. Miró las causas enumeradas en los documentos oficiales. El consumo de memoria parece estar bien a partir de las estadísticas. Los problemas de contención del almacén de datos también se manejan en mi código. Tiempos de espera también. Cambiar el mecanismo de tareas para trabajar en trozos recuperables parece ser la única salida.

Después de perseguir este error por algún tiempo, parece que el paradigma de desarrollo de AppEngine gira en torno a los controladores de url con limitaciones de tiempo, memoria, etc. Esto también es aplicable a las tareas de larga ejecución. Rehice mi tarea a largo plazo para ejecutar pequeñas tareas. Las colas de tareas desencadenaron tareas más pequeñas que se ejecutan por inturn, antes de terminar de poner en cola la siguiente tarea. ¡Nunca falló ni una vez!

La ventaja es que taskqueuus tiene mejor failsafe/handover que solo un gran trabajo cron. Una falla de la tarea no significa que el resto de la enorme lista de tareas falle.

Cuestiones relacionadas