Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
AWS SDK for Rust Fornisce un comportamento di ripetizione predefinito e opzioni di configurazione personalizzabili. Chiamate per restituire Servizi AWS occasionalmente eccezioni impreviste. Alcuni tipi di errori, come gli errori di limitazione o gli errori transitori, potrebbero avere esito positivo se la chiamata viene ritentata.
Il comportamento dei tentativi può essere configurato globalmente utilizzando le variabili o le impostazioni di ambiente nel file condiviso. AWS config
Per informazioni su questo approccio, consulta Retry behavior nella AWS SDKs and Tools Reference Guide. Include anche informazioni dettagliate sulle implementazioni della strategia Retry e su come sceglierne una piuttosto che un'altra.
In alternativa, queste opzioni possono essere configurate anche nel codice, come illustrato nelle sezioni seguenti.
Configurazione predefinita dei nuovi tentativi
Ogni client di servizio utilizza per impostazione predefinita la configurazione della strategia di standard
riprova fornita tramite la struttura. RetryConfig
Solo alcuni tipi di errori sono considerati correggibili da. SDKs Esempi di errori riutilizzabili sono:
-
timeout del socket
-
limitazione sul lato dei servizi
-
errori di servizio transitori come le risposte HTTP 5XX
I seguenti esempi non sono considerati riutilizzabili:
-
Parametri mancanti o non validi
-
errori di autenticazione/sicurezza
-
eccezioni di configurazione errata
È possibile personalizzare la strategia di standard
riprova impostando il numero massimo di tentativi, ritardi e configurazione di backoff.
Numero massimo di tentativi
Puoi personalizzare il numero massimo di tentativi nel tuo codice fornendo una modifica 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;
Ritardi e arretramenti
Se è necessario un nuovo tentativo, la strategia di riprova predefinita attende prima di effettuare il tentativo successivo. Il ritardo per il primo tentativo è piccolo, ma aumenta esponenzialmente per i tentativi successivi. La quantità massima di ritardo è limitata in modo che non diventi troppo grande.
Il jitter casuale viene applicato ai ritardi tra tutti i tentativi. Il jitter aiuta a mitigare l'effetto delle flotte di grandi dimensioni che possono causare tempeste di ritardi. Per una discussione più approfondita su backoff e jitter esponenziali, vedete Exponential Backoff and Jitter nel blog di architettura.AWS
Puoi personalizzare le impostazioni di ritardo nel tuo codice fornendo una modifica al tuo. RetryConfig
aws_config::defaults
Il codice seguente imposta la configurazione in modo da ritardare il primo tentativo fino a 100 millisecondi e che il tempo massimo tra un tentativo e l'altro sia di 5 secondi.
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;
Modalità di riprova adattiva
In alternativa alla strategia Mode Retry, la standard
adaptive
Mode Retry Strategy è un approccio avanzato che punta alla frequenza di richiesta ideale per ridurre al minimo gli errori di throttling.
Nota
Adaptive retry è una modalità di riprova avanzata. L'utilizzo di questa strategia in genere non è consigliato. Vedi Comportamento dei tentativi nella Guida di riferimento agli strumenti AWS SDKs e agli strumenti.
I tentativi adattivi includono tutte le funzionalità dei nuovi tentativi standard. Aggiunge un limitatore di velocità sul lato client che misura la frequenza delle richieste limitate rispetto alle richieste non limitate. Inoltre limita il traffico per cercare di rimanere entro una larghezza di banda sicura, evitando idealmente errori di limitazione.
La tariffa si adatta in tempo reale alle mutevoli condizioni di servizio e ai modelli di traffico e potrebbe aumentare o diminuire di conseguenza la velocità di traffico. In modo critico, il limitatore di velocità potrebbe ritardare i tentativi iniziali in scenari di traffico intenso.
È possibile selezionare la strategia di adaptive
riprova nel codice fornendo una modifica: RetryConfig
let config = aws_config::defaults(BehaviorVersion::latest())
.retry_config(RetryConfig::adaptive())
.load()
.await;