Estrategia de control de reintentos

Estrategia de reintentos

Hay varias razones por las que las operaciones de gsutil pueden fallar; algunas no se pueden volver a intentar y requieren que el usuario realice alguna acción, por ejemplo:

  • Las credenciales no son válidas.
  • No se puede acceder a la red debido a un problema de configuración del proxy.
  • Se denegó el acceso porque el objeto o depósito que intentas usar tiene una LCA que no permite la acción que intentas realizar.
  • Fallan operaciones individuales dentro de un comando que ejecuta operaciones en paralelo (es decir, comandos que usan la marca de nivel superior -m).

En otros casos, los errores se pueden volver a intentar: fallas transitorias de la red, códigos de error HTTP 429 y 5xx, y códigos de error HTTP 408 cuando se realiza una carga reanudable. Para estos casos, gsutil volverá a intentarlo mediante una estrategia de retirada exponencial binaria truncada:

  • Espera un período aleatorio entre [0…1] segundos y vuelve a intentarlo.
  • Si eso falla, espera un período aleatorio entre [0…2] segundos y vuelve a intentarlo.
  • Si eso falla, espera un período aleatorio entre [0…4] segundos y vuelve a intentarlo.
  • Y así, hasta una cantidad máxima configurable de reintentos (predeterminado = 23).

Cada período de reintento estará limitado por un período máximo configurable (predeterminado = 60 segundos)

Por lo tanto, de forma predeterminada, gsutil volverá a intentarlo 23 veces en 1+2+4+8+16+32+60… segundos durante alrededor de 10 minutos. Puedes ajustar la cantidad de reintentos y el retraso máximo de cualquier reintento individual si editas las variables de configuración num_retries y max_retry_delay en la sección “[Boto]” del archivo de configuración .boto. La mayoría de los usuarios no deberían necesitar cambiar estos valores.

Para las transferencias de datos (los comandos cp y rsync de gsutil), gsutil proporciona funcionalidad de reintento adicional, en forma de transferencias reanudables. En esencia, una transferencia que se interrumpió debido a un error transitorio se puede reiniciar sin tener que empezar desde cero. Para obtener más información sobre este tema, consulta la sección “Transferencias reanudables” de gsutil help cp.