Estrategia de control de reintentos

Estrategia de reintentos

Si una operación de gsutil falla debido a alguno de los siguientes motivos, debes tomar medidas antes de volver a intentarlo:

  • 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 bucket 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).

gsutil vuelve a intentar los siguientes errores sin que debas realizar ninguna acción adicional:

  • Fallas transitorias de red
  • Códigos de error HTTP 429 y 5xx
  • Códigos de error HTTP 408 cuando se realiza una carga reanudable

Para los errores que se pueden intentar de nuevo, gsutil vuelve a intentar las solicitudes 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  vuelve 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 las veces, no es necesario 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.

Para obtener información sobre cómo otras herramientas de Cloud Storage manejan la estrategia de reintentos, consulta Estrategia de reintento.