Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Kit AWS SDK pour Rust Fournit un comportement de nouvelle tentative par défaut et des options de configuration personnalisables. Appels renvoyant de Services AWS temps en temps des exceptions inattendues. Certains types d'erreurs, tels que les erreurs de régulation ou les erreurs transitoires, peuvent réussir si l'appel est retenté.
Le comportement des nouvelles tentatives peut être configuré globalement à l'aide des variables d'environnement ou des paramètres du AWS config
fichier partagé. Pour plus d'informations sur cette approche, consultez la section Comportement des nouvelles tentatives dans le guide de référence AWS SDKs et Tools. Il inclut également des informations détaillées sur la mise en œuvre des stratégies de réessai et sur la manière de choisir une stratégie plutôt qu'une autre.
Ces options peuvent également être configurées dans votre code, comme indiqué dans les sections suivantes.
Configuration de nouvelle tentative par défaut
Chaque client de service utilise par défaut la configuration de stratégie standard
de nouvelle tentative fournie par la RetryConfig
Seuls certains types d'erreurs sont considérés comme réessayables par le. SDKs Voici des exemples d'erreurs réessayables :
-
délais d'expiration des sockets
-
régulation côté service
-
erreurs de service transitoires telles que les réponses HTTP 5XX
Les exemples suivants ne sont pas considérés comme réessayables :
-
Paramètres manquants ou non valides
-
erreurs d'authentification/de sécurité
-
exceptions de mauvaise configuration
Vous pouvez personnaliser la stratégie des standard
nouvelles tentatives en définissant le nombre maximal de tentatives, les délais et la configuration des interruptions.
Nombre maximum de tentatives
Vous pouvez personnaliser le nombre maximum de tentatives dans votre code en fournissant une modification 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;
Retards et retards
Si une nouvelle tentative est nécessaire, la stratégie de nouvelle tentative par défaut attend avant d'effectuer la prochaine tentative. Le délai de la première tentative est faible, mais il augmente de façon exponentielle lors des tentatives ultérieures. Le délai maximal est plafonné afin qu'il ne devienne pas trop important.
Une instabilité aléatoire est appliquée aux délais entre toutes les tentatives. L'instabilité contribue à atténuer les effets des grandes flottes qui peuvent provoquer des tempêtes de nouvelles tentatives. Pour une discussion plus approfondie sur le recul et la gigue exponentiels, voir Exponential Backoff And
Vous pouvez personnaliser les paramètres de délai de votre code en fournissant une modification RetryConfig
aws_config::defaults
. Le code suivant définit la configuration de manière à retarder la première tentative de 100 millisecondes au maximum et à ce que le délai maximum entre chaque nouvelle tentative soit de 5 secondes.
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;
Mode de nouvelle tentative adaptatif
Comme alternative à la stratégie de nouvelle standard
tentative de mode, la stratégie de nouvelle adaptive
tentative de mode est une approche avancée qui recherche le taux de requêtes idéal afin de minimiser les erreurs de limitation.
Note
Les tentatives adaptatives sont un mode de nouvelle tentative avancé. L'utilisation de cette stratégie n'est généralement pas recommandée. Reportez-vous à la section Comportement de nouvelle tentative dans le guide de référence AWS SDKs et Tools.
Les tentatives adaptatives incluent toutes les fonctionnalités des tentatives standard. Il ajoute un limiteur de débit côté client qui mesure le taux de demandes limitées par rapport aux demandes non limitées. Cela limite également le trafic pour tenter de rester dans une bande passante sûre, ce qui ne provoque idéalement aucune erreur de régulation.
Le tarif s'adapte en temps réel à l'évolution des conditions de service et des modèles de trafic et peut augmenter ou diminuer le taux de trafic en conséquence. Surtout, le limiteur de débit peut retarder les premières tentatives dans les scénarios à fort trafic.
Vous pouvez sélectionner la stratégie adaptive
de nouvelle tentative dans le code en fournissant une modification RetryConfig
let config = aws_config::defaults(BehaviorVersion::latest())
.retry_config(RetryConfig::adaptive())
.load()
.await;