As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
O AWS SDK para Rust fornece um comportamento de repetição padrão e opções de configuração personalizáveis. Ligações para retornar Serviços da AWS ocasionalmente exceções inesperadas. Certos tipos de erros, como erros transitórios ou de limitação, podem ser bem-sucedidos se a chamada for repetida.
O comportamento de repetição pode ser configurado globalmente usando variáveis de ambiente ou configurações no AWS config
arquivo compartilhado. Para obter informações sobre essa abordagem, consulte o comportamento de repetição no Guia de referência de ferramentas AWS SDKs e ferramentas. Também inclui informações detalhadas sobre implementações de estratégias de repetição e como escolher uma em vez da outra.
Como alternativa, essas opções também podem ser configuradas em seu código, conforme mostrado nas seções a seguir.
Configuração de nova tentativa padrão
Cada cliente de serviço usa como padrão a configuração da estratégia de standard
repetição fornecida pela estrutura. RetryConfig
Somente alguns tipos de erros são considerados passíveis de nova tentativa pelo. SDKs Exemplos de erros que podem ser repetidos são:
-
tempos limite de soquete
-
limitação do lado do serviço
-
erros de serviço transitórios, como respostas HTTP 5XX
Os exemplos a seguir não são considerados repetitivos:
-
Parâmetros ausentes ou inválidos
-
erros de autenticação/segurança
-
exceções de configuração incorreta
Você pode personalizar a estratégia de standard
repetição definindo o máximo de tentativas, atrasos e configuração de recuo.
Máximo de tentativas
Você pode personalizar o máximo de tentativas em seu código fornecendo uma modificação 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;
Atrasos e recuos
Se uma nova tentativa for necessária, a estratégia de repetição padrão aguarda antes de fazer a tentativa subsequente. O atraso na primeira tentativa é pequeno, mas cresce exponencialmente nas tentativas posteriores. A quantidade máxima de atraso é limitada para que não cresça muito.
A instabilidade aleatória é aplicada aos atrasos entre todas as tentativas. A instabilidade ajuda a mitigar o efeito de grandes frotas que podem causar novas tempestades. Para uma discussão mais profunda sobre recuo exponencial e instabilidade, consulte Exponential Backoff And Jitter no blog de arquitetura
Você pode personalizar as configurações de atraso em seu código fornecendo uma modificação RetryConfig
aws_config::defaults
. O código a seguir define a configuração para atrasar a primeira tentativa de repetição em até 100 milissegundos e que o tempo máximo entre qualquer tentativa de repetição é 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 repetição adaptável
Como alternativa à estratégia de repetição do standard
modo, a estratégia de repetição do adaptive
modo é uma abordagem avançada que busca a taxa de solicitação ideal para minimizar os erros de limitação.
nota
As novas tentativas adaptáveis são um modo de repetição avançado. Normalmente, o uso dessa estratégia não é recomendado. Consulte o comportamento de repetição no Guia de referência de ferramentas AWS SDKs e ferramentas.
As novas tentativas adaptáveis incluem todos os recursos das novas tentativas padrão. Ele adiciona um limitador de taxa do lado do cliente que mede a taxa de solicitações limitadas em comparação com solicitações não limitadas. Também limita o tráfego para tentar permanecer dentro de uma largura de banda segura, o que, idealmente, causa zero erros de limitação.
A taxa se adapta em tempo real às mudanças nas condições de serviço e nos padrões de tráfego e pode aumentar ou diminuir a taxa de tráfego de acordo. Fundamentalmente, o limitador de taxa pode atrasar as tentativas iniciais em cenários de tráfego intenso.
Você pode selecionar a estratégia de adaptive
repetição no código fornecendo uma modificação: RetryConfig
let config = aws_config::defaults(BehaviorVersion::latest())
.retry_config(RetryConfig::adaptive())
.load()
.await;