Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Comportamiento de los reintentos - AWS SDKs y herramientas

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Comportamiento de los reintentos

nota

Para obtener ayuda para comprender el diseño de las páginas de configuración o para interpretar la tabla Support by AWS SDKs and tools que aparece a continuación, consulteDescripción de las páginas de configuración de esta guía.

El comportamiento de SDKs reintento incluye la configuración relativa a la forma en que se intenta recuperarse de los errores resultantes de las solicitudes realizadas a Servicios de AWS.

Configure esta funcionalidad mediante lo siguiente:

retry_mode- configuración de AWS config archivos compartidos
AWS_RETRY_MODE: variable de entorno
aws.retryMode- Propiedad del sistema JVM: solo en Java/Kotlin

Especifica cómo el SDK o la herramienta para desarrolladores intentan los reintentos.

Valor predeterminado: este valor es específico de tu SDK. Consulta tu guía de SDK específica o la base de código de tu SDK para ver el código predeterminadoretry_mode.

Valores válidos:

  • standard— (Recomendado) El conjunto recomendado de reglas de reintento en todas AWS SDKs partes. Este modo incluye un conjunto estándar de errores que se repiten y ajusta automáticamente el número de reintentos para maximizar la disponibilidad y la estabilidad. Este modo es seguro para su uso en aplicaciones multiusuario. El número máximo predeterminado de intentos con este modo es tres, a menos que los max_attempts se configuren de forma explícita.

  • adaptive— Un modo de reintento, adecuado solo para casos de uso especializados, que incluye la funcionalidad del modo estándar, así como una limitación automática de la velocidad por parte del cliente. Este modo de reintento no se recomienda para aplicaciones con varios usuarios, a menos que se procure aislar a los inquilinos de las aplicaciones. Para obtener más información, consulta Elegir entre los modos y reintentar standardadaptive. Este modo es experimental y podría cambiar su comportamiento en el futuro.

  • legacy— (No recomendado) Específico para tu SDK (consulta la guía específica del SDK o la base de código de tu SDK).

max_attempts- configuración de AWS config archivos compartidos
AWS_MAX_ATTEMPTS: variable de entorno
aws.maxAttempts- Propiedad del sistema JVM: solo en Java/Kotlin

Especifica el número máximo de intentos que se pueden realizar en una solicitud.

Valor predeterminado: si no se especifica este valor, su valor predeterminado depende del valor de la configuración retry_mode:

  • Si el retry_mode es legacy: usa un valor predeterminado específico de su SDK (consulte su guía específica del SDK o la base de código de su SDK para ver el valor predeterminado de max_attempts).

  • Si el retry_mode es standard: realiza tres intentos.

  • Si el retry_mode es adaptive: realiza tres intentos.

Valores válidos: un número mayor que 0.

Elegir entre los modos y reintentar standardadaptive

Le recomendamos que utilice el modo de standard reintento a menos que esté seguro de que su uso es el más adecuado. adaptive

nota

El adaptive modo presupone que se agrupan los clientes en función del ámbito en el que el servicio de backend puede limitar las solicitudes. Si no lo haces, la limitación de un recurso podría retrasar las solicitudes de un recurso no relacionado si utilizas el mismo cliente para ambos recursos.

Estándar Adaptativo
Casos de uso de aplicaciones: todos. Casos de uso de aplicaciones:
  1. No es sensible a la latencia.

  2. El cliente solo accede a un único recurso, o bien, usted proporciona una lógica para agrupar a sus clientes por separado según el recurso de servicio al que se accede.

Admite la interrupción de circuitos para evitar que el SDK vuelva a intentarlo durante las interrupciones. Admite la interrupción de circuitos para evitar que el SDK se vuelva a intentar durante las interrupciones.
Utiliza un retroceso exponencial fluctuante en caso de fallo. Utiliza tiempos de espera dinámicos para intentar minimizar el número de solicitudes fallidas, a cambio de la posibilidad de aumentar la latencia.
Nunca retrasa el primer intento de solicitud, solo los reintentos. Puede acelerar o retrasar el intento de solicitud inicial.

Si opta por utilizar adaptive el modo, la aplicación debe crear clientes diseñados en función de cada recurso que pueda estar limitado. Un recurso, en este caso, es más preciso que pensar en cada uno de ellos. Servicio de AWS Servicios de AWS pueden tener dimensiones adicionales que utilizan para limitar las solicitudes. Usemos el servicio Amazon DynamoDB como ejemplo. DynamoDB Región de AWS usa plus la tabla a la que se accede para acelerar las solicitudes. Esto significa que una tabla a la que accede el código podría estar más restringida que otras. Si el código utilizaba el mismo cliente para acceder a todas las tablas y las solicitudes a una de esas tablas están restringidas, el modo de reintento adaptativo reducirá la tasa de solicitudes de todas las tablas. El código debe diseñarse para tener un cliente por par. Region-and-table Si experimentas una latencia inesperada al usar el adaptive modo, consulta la guía de AWS documentación específica del servicio que estés utilizando.

Detalles de implementación del modo de reintento

Se utilizan cubos de fichas para decidir si se debe volver a intentar una solicitud y (en el caso del modo de adaptive reintento) con qué rapidez se deben enviar las solicitudes. AWS SDKs El SDK utiliza dos grupos de fichas: un grupo de reintentos y un grupo de fichas de tasa de solicitudes.

  • El depósito de reintentos se utiliza para determinar si el SDK debe deshabilitar temporalmente los reintentos a fin de proteger los servicios ascendentes y descendentes durante las interrupciones. Los tokens se obtienen del depósito antes de que se intenten reintentarlo y, cuando las solicitudes se realizan correctamente, se devuelven al depósito. Si el depósito está vacío cuando se intenta reintentar, el SDK no volverá a intentar la solicitud.

  • El depósito de fichas de tasa de solicitudes solo se usa en el modo de adaptive reintento para determinar la velocidad a la que se envían las solicitudes. Los tokens se adquieren del depósito antes de que se envíe la solicitud y se devuelven al depósito a un ritmo determinado dinámicamente en función de la limitación de las respuestas devueltas por el servicio.

A continuación se muestra el pseudocódigo de alto nivel para ambos modos de reintento standard y adaptive:

MakeSDKRequest() { attempts = 0 loop { GetSendToken() response = SendHTTPRequest() RequestBookkeeping(response) if not Retryable(response) return response attempts += 1 if attempts >= MAX_ATTEMPTS: return response if not HasRetryQuota(response) return response delay = ExponentialBackoff(attempts) sleep(delay) } }

A continuación se muestran más detalles sobre los componentes utilizados en el pseudocódigo:

GetSendToken:

Este paso solo se utiliza en el modo de reintento. adaptive Este paso adquiere un token del grupo de tokens de tasa de solicitud. Si un token no está disponible, esperará a que esté disponible. Es posible que tu SDK tenga opciones de configuración disponibles para rechazar la solicitud en lugar de esperar. Los tokens del depósito se rellenan a un ritmo que se determina de forma dinámica, en función del número de respuestas restrictivas que reciba el cliente.

SendHTTPRequest:

Este paso envía la solicitud a. AWS La mayoría AWS SDKs usa una biblioteca HTTP que usa grupos de conexiones para reutilizar una conexión existente al realizar una solicitud HTTP. Por lo general, las conexiones se reutilizan si una solicitud falla debido a errores de limitación, pero no si la solicitud falla debido a un error transitorio.

RequestBookkeeping:

Los tokens se añaden al depósito de fichas si la solicitud se realiza correctamente. Solo en el modo de adaptive reintento, la tasa de llenado del depósito de fichas de tasa de solicitudes se actualiza en función del tipo de respuesta recibida.

Retryable:

Este paso determina si se puede volver a intentar una respuesta en función de lo siguiente:

  • El código de estado HTTP.

  • El código de error devuelto por el servicio.

  • Errores de conexión, definidos como cualquier error recibido por el SDK en el que no se reciba una respuesta HTTP del servicio.

Los errores transitorios (códigos de estado HTTP 400, 408, 500, 502, 503 y 504) y los errores de limitación (códigos de estado HTTP 400, 403, 429, 502, 503 y 509) se pueden volver a intentar. El comportamiento de los reintentos del SDK se determina en combinación con los códigos de error u otros datos del servicio.

MAX_ATTEMPTS:

El número máximo de intentos predeterminado lo establece la retry_mode configuración, a menos que la configuración lo anule. max_attempts

HasRetryQuota

En este paso, se obtiene un token del grupo de reintentos. Si el depósito de fichas de reintento está vacío, no se volverá a intentar la solicitud.

ExponentialBackoff

En el caso de un error que se pueda volver a intentar, el retraso del reintento se calcula mediante un retroceso exponencial truncado. El SDKs uso de un retardo exponencial binario truncado con fluctuación de fase. El siguiente algoritmo muestra cómo se define la cantidad de tiempo de reposo, en segundos, para una respuesta a una solicitud i:

seconds_to_sleep_i = min(b*r^i, MAX_BACKOFF)

En el algoritmo anterior, se aplican los siguientes valores:

b = random number within the range of: 0 <= b <= 1

r = 2

MAX_BACKOFF = 20 seconds SDKspara la mayoría. Consulte la guía o el código fuente específicos del SDK para confirmarlo.

Support by AWS SDKs and tools

Las siguientes SDKs son compatibles con las funciones y configuraciones descritas en este tema. Se anotan todas las excepciones parciales. Todos los ajustes de propiedades del sistema JVM son compatibles con AWS SDK para Java y AWS SDK para Kotlin únicamente.

SDK Compatible Notas o más información
AWS CLI  v2
SDK para C++
SDK para Go V2 (1.x)
SDK para Go 1.x (V1) No
SDK para Java 2.x
SDK para Java 1.x Propiedades del sistema JVM: usar com.amazonaws.sdk.maxAttempts en lugar deaws.maxAttempts; usar en com.amazonaws.sdk.retryMode lugar de. aws.retryMode
SDK para 3.x JavaScript
SDK para 2.x JavaScript No Admite un número máximo de reintentos, el retroceso exponencial con fluctuación de fase y la opción de un método personalizado para el retraso de los reintentos.
SDK para Kotlin
SDK para .NET 3.x
SDK para PHP 3.x
SDK para Python (Boto3)
SDK para Ruby 3.x
SDK para Rust
SDK para Swift
Herramientas para PowerShell
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.