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.
AWS SDK para Rust Proporciona un comportamiento de reintento predeterminado y opciones de configuración personalizables. Las llamadas devuelven Servicios de AWS ocasionalmente excepciones inesperadas. Algunos tipos de errores, como los errores transitorios o de limitación, pueden producirse correctamente si se vuelve a intentar realizar la llamada.
El comportamiento de los reintentos se puede configurar globalmente mediante variables de entorno o ajustes del archivo compartido. AWS config
Para obtener información sobre este enfoque, consulte el comportamiento de los reintentos en la Guía de referencia de herramientas AWS SDKs y herramientas. También incluye información detallada sobre las implementaciones de las estrategias de reintento y sobre cómo elegir una u otra.
Como alternativa, estas opciones también se pueden configurar en el código, como se muestra en las siguientes secciones.
Configuración de reintentos predeterminada
Cada cliente de servicio utiliza de forma predeterminada la configuración de la estrategia de standard
reintento proporcionada a través de la estructura. RetryConfig
El. Solo algunos tipos de errores se consideran reintentables. SDKs Algunos ejemplos de errores que se pueden volver a intentar son:
-
tiempos de espera de los sockets
-
regulación del lado del servicio
-
errores de servicio transitorios, como las respuestas HTTP 5XX
Los siguientes ejemplos no se consideran reintentables:
-
Parámetros faltantes o no válidos
-
errores de autenticación/seguridad
-
excepciones de mala configuración
Puede personalizar la estrategia de standard
reintentos estableciendo la configuración máxima de intentos, retrasos y retrasos.
Número máximo de intentos
Puedes personalizar el número máximo de intentos en tu código proporcionando una modificación RetryConfig
aws_config::defaults
:
const CUSTOM_MAX_ATTEMPTS: u32 = 5;
let retry_config = RetryConfig::standard()
// Set max attempts. When max_attempts is 1, there are no retries.
// This value MUST be greater than zero.
// Defaults to 3.
.with_max_attempts(CUSTOM_MAX_ATTEMPTS);
let config = aws_config::defaults(BehaviorVersion::latest())
.retry_config(retry_config)
.load()
.await;
Retrasos y retrasos
Si es necesario volver a intentarlo, la estrategia de reintento predeterminada espera antes de realizar el siguiente intento. El retraso del primer reintento es pequeño, pero aumenta exponencialmente en los reintentos posteriores. La cantidad máxima de retraso está limitada para que no aumente demasiado.
Se aplica una fluctuación aleatoria a los retrasos entre todos los intentos. La fluctuación ayuda a mitigar el efecto de las grandes flotas, que pueden provocar tormentas de reintentos. Para obtener un análisis más profundo sobre el retardo y la fluctuación exponenciales, consulte el tema del retardo y la fluctuación exponenciales en el blog de arquitectura
Puede personalizar la configuración de retardo de su código proporcionando una modificación en su código. RetryConfig
aws_config::defaults
El código siguiente establece la configuración para retrasar el primer intento hasta 100 milisegundos y para que el tiempo máximo entre un reintento sea de 5 segundos.
let retry_config = RetryConfig::standard()
// Defaults to 1 second.
.with_initial_backoff(Duration::from_millis(100))
// Defaults to 20 seconds.
.with_max_backoff(Duration::from_secs(5));
let config = aws_config::defaults(BehaviorVersion::latest())
.retry_config(retry_config)
.load()
.await;
Modo de reintento adaptativo
Como alternativa a la estrategia de reintento de standard
modo, la estrategia de reintento de adaptive
modo es un enfoque avanzado que busca la tasa de solicitudes ideal para minimizar los errores de limitación.
nota
Los reintentos adaptativos son un modo de reintento avanzado. Por lo general, no se recomienda usar esta estrategia. Consulte el comportamiento de reintento en la Guía de referencia de AWS SDKs and Tools.
Los reintentos adaptables incluyen todas las características de los reintentos estándar. Añade un limitador de velocidad en el lado del cliente que mide la tasa de solicitudes restringidas en comparación con las solicitudes no restringidas. También limita el tráfico para intentar mantenerse dentro de un ancho de banda seguro, lo que idealmente no provoca errores de limitación.
La velocidad se adapta en tiempo real a los cambios en las condiciones del servicio y los patrones de tráfico y, en consecuencia, podría aumentar o disminuir la velocidad del tráfico. Lo que es más grave, el limitador de velocidad podría retrasar los intentos iniciales en situaciones de alto tráfico.
Puede seleccionar la estrategia de adaptive
reintento en el código proporcionando una modificación: RetryConfig
let config = aws_config::defaults(BehaviorVersion::latest())
.retry_config(RetryConfig::adaptive())
.load()
.await;