Reintentar tareas

De forma predeterminada, si un trabajo de Cloud Scheduler no recibe una confirmación de su controlador, se considera que ha fallado y se volverá a intentar según el retroceso exponencial que hayas configurado. Puedes determinar este comportamiento de reintento de las siguientes formas al crear o actualizar una tarea de Cloud Scheduler:

Reintentar configuración

En las siguientes tablas se describen los ajustes de reintento que puede configurar.

Número máximo de reintentos

Número de intentos que realizará el sistema para ejecutar una tarea mediante el procedimiento de espera exponencial descrito en maxDoublings.

Descripción

Si retryCount tiene un valor distinto de cero, Cloud Scheduler volverá a intentar ejecutar la tarea fallida retryCount veces, usando un tiempo de espera exponencial, hasta que la tarea se complete correctamente o se agote el número de reintentos. Ten en cuenta que la próxima hora de ejecución programada puede omitirse si los reintentos continúan hasta esa hora.

Si retryCount es 0 (y maxRetryDuration también lo es), no se volverá a intentar ejecutar un trabajo si falla. En su lugar, Cloud Scheduler esperará hasta la siguiente hora de ejecución programada.

No se admiten valores superiores a 5 ni valores negativos.

Predeterminado El valor predeterminado es 0.
Etiqueta de consola Número máximo de reintentos
Marca de CLI --max-retry-attempts
Campo de la API retryCount

Duración máxima de los reintentos

El límite de tiempo para volver a intentar un trabajo fallido, medido desde el momento en que se intentó ejecutar por primera vez. Si se especifica con retryCount, la tarea se volverá a intentar hasta que se alcancen ambos límites.

Descripción

Duración en segundos con hasta nueve dígitos fraccionarios, que termina con "s" (por ejemplo, "3.5s").

Una duración de 0 significa que la duración de los reintentos es ilimitada. Sin embargo, si retryCount también es 0, no se volverá a intentar realizar un trabajo si falla.

Predeterminado El valor predeterminado es 0 segundos.
Etiqueta de consola Duración máxima de los reintentos
Marca de CLI --max-retry-duration
Campo de la API maxRetryDuration

Duración mínima del tiempo de espera

Tiempo mínimo que se debe esperar antes de volver a intentar un trabajo después de que falle.

Descripción

Duración en segundos con hasta nueve dígitos fraccionarios, que termina con "s" (por ejemplo, "3.5s").

Predeterminado El valor predeterminado es 5 segundos.
Etiqueta de consola Duración mínima del tiempo de espera
Marca de CLI --min-backoff
Campo de la API minBackoffDuration

Duración máxima del tiempo de espera

Tiempo máximo que se espera antes de volver a intentar una tarea después de que falle.

Descripción

Duración en segundos con hasta nueve dígitos fraccionarios, que termina con "s" (por ejemplo, "3.5s").

Predeterminado El valor predeterminado es 3600 segundos (1 hora).
Etiqueta de consola Duración máxima del tiempo de espera
Marca de CLI --max-backoff
Campo de la API maxBackoffDuration

Número máximo de duplicaciones

Número máximo de veces que se duplicará el intervalo entre los reintentos de una tarea fallida antes de que el aumento se convierta en constante.

Descripción El tiempo entre reintentos se duplicará maxDoublings veces.

El intervalo de reintento de un trabajo empieza en minBackoffDuration, después se duplica maxDoublings veces, aumenta de forma lineal y, por último, se reintenta en intervalos de maxBackoffDuration hasta retryCount veces. Por ejemplo:

Si minBackoffDuration es 10 s, maxBackoffDuration es 300 s y maxDoublings es 3:

  1. La tarea se volverá a intentar en 10 segundos.
  2. El intervalo de reintento se duplicará tres veces.
  3. El intervalo de reintento aumentará de forma lineal en 2^3 * 10 s.
  4. Si procede, el trabajo se volverá a intentar a intervalos de maxBackoffDuration hasta que se haya intentado retryCount veces (un máximo de 5 veces).

Por lo tanto, las solicitudes se volverán a intentar a los 10, 20, 40, 80 y 160 segundos.

Si minBackoffDuration es 10 s, maxBackoffDuration es 120 s y maxDoublings es 2:

  1. La tarea se volverá a intentar en 10 segundos.
  2. El intervalo de reintento se duplicará dos veces.
  3. El intervalo de reintento aumentará de forma lineal en 2^3 * 10 s.
  4. Si procede, el trabajo se volverá a intentar a intervalos de maxBackoffDuration hasta que se haya intentado retryCount veces (un máximo de 5 veces).

Por lo tanto, las solicitudes se volverán a intentar a los 10, 20, 40, 120 y 120 segundos.

Predeterminado El valor predeterminado es 5.
Etiqueta de consola Número máximo de duplicaciones
Marca de CLI --max-doublings
Campo de la API maxDoublings

Ejemplos de reintentos

En los ejemplos siguientes se muestra el comportamiento de reintento cuando un trabajo de Cloud Scheduler no se completa correctamente.

Si no se han definido retryCount ni maxRetryDuration

Ambos ajustes tienen el valor predeterminado 0 y el trabajo no se vuelve a intentar.

Ten en cuenta que Cloud Scheduler intentará ejecutar el trabajo a la siguiente hora de ejecución programada.

Si se han definido retryCount y maxRetryDuration

El trabajo se volverá a intentar al menos retryCount veces hasta alcanzar maxRetryDuration.

Ten en cuenta que el trabajo podría volver a intentarse más veces que el valor de retryCount.

Si se define retryCount y no se define maxRetryDuration

El valor predeterminado del ajuste maxRetryDuration es 0 y la tarea se volverá a intentar exactamente retryCount veces.

Si no se ha definido retryCount y sí maxRetryDuration

La tarea se volverá a intentar cualquier número de veces (hasta un máximo de 5 veces) o hasta que se alcance maxRetryDuration.