Reintenta tareas de aplicaciones fallidas

Las tareas de aplicaciones que se procesan a través de una lista de tareas en cola pueden fallar por muchas razones. Si un controlador no puede ejecutar una tarea (y, por lo tanto, muestra cualquier código de estado HTTP fuera del rango 200–299), App Engine vuelve a intentar la tarea hasta que se ejecuta con éxito. De manera predeterminada, el sistema reduce la tasa de reintentos de forma gradual para no saturar la aplicación con demasiadas solicitudes. Sin embargo, el tiempo de espera máximo entre un intento y otro hasta que se pueda ejecutar la tarea es de una hora.

Reintenta tareas

Puedes personalizar tu propio esquema para reintentos de tareas si agregas el elemento reintentar parámetros en queue.yaml. Esto te permite especificar la cantidad máxima de veces que se reintentarán las tareas fallidas en una cola específica. También puedes establecer un límite de tiempo para reintentar y controlar el intervalo entre intentos.

En el ejemplo siguiente, se muestran varias situaciones de reintento:

  • En fooqueue, las tareas se vuelven a intentar hasta siete veces y hasta dos días desde el primer intento de ejecución. Una vez que se pasan ambos límites, la tarea falla de forma permanente.
  • En barqueue, App Engine aumenta el intervalo linealmente entre cada reintento hasta alcanzar la máxima retirada para reintentar las tareas, y lo hace de manera indefinida en el intervalo máximo (por lo que los intervalos entre solicitudes son de 10 segundos, 20, 30, …, 190, 200, 200, …).
  • En bazqueue, el intervalo de reintento comienza con 10 segundos, luego se duplica tres veces, luego aumenta linealmente y, por último, reintenta de forma indefinida en el intervalo máximo (por lo que los intervalos entre solicitudes son de 10 segundos, 20, 40, 80, 160, 240, 300, 300, …).
queue:
- name: fooqueue
  rate: 1/s
  retry_parameters:
    task_retry_limit: 7
    task_age_limit: 2d
- name: barqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 0
- name: bazqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 300
    max_doublings: 3

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Go