0Pricing
C# Academy · Leçon

Politiques de nouvelle tentative

Réessayez après des échecs temporaires avec temporisation progressive.

Politiques de nouvelle tentative est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Qu’est-ce que Polly ?

Polly est une bibliothèque de résilience .NET qui aide vos applications à faire face aux défaillances transitoires, aux réponses lentes et aux dépendances surchargées. Elle fournit des stratégies telles que les nouvelles tentatives, le disjoncteur, le délai d’expiration, la solution de repli et la limitation du débit.

Ce cours utilise Polly v8 (l’interface Polly.Core).

dotnet add package Polly.Core

Pourquoi effectuer de nouvelles tentatives ?

De nombreuses défaillances sont transitoires : une brève perturbation du réseau, un délai d’expiration momentané ou le redémarrage d’un service. Retenter l’opération un instant plus tard réussit souvent sans déranger l’utilisateur.

Les nouvelles tentatives doivent cibler uniquement les erreurs transitoires, jamais les erreurs permanentes comme une erreur 404.

Une stratégie simple de nouvelle tentative

Avec Polly v8, vous construisez une ResiliencePipeline à l’aide de RetryStrategyOptions. Par défaut, une exception levée déclenche une nouvelle tentative.

using Polly;
using Polly.Retry;

var pipeline = new ResiliencePipelineBuilder()
    .AddRetry(new RetryStrategyOptions
    {
        MaxRetryAttempts = 3
    })
    .Build();

Exécuter via la chaîne

Encadrez l’appel risqué avec ExecuteAsync. Polly l’exécute et, s’il échoue, effectue de nouvelles tentatives jusqu’au nombre configuré.

await pipeline.ExecuteAsync(async token =>
{
    await httpClient.GetAsync("https://api.example.com/data", token);
});

Déterminer ce qui doit faire l’objet d’une nouvelle tentative

Utilisez ShouldHandle avec un générateur de prédicat pour retenter uniquement certaines exceptions ou certains résultats, et éviter les nouvelles tentatives en cas d’erreurs permanentes.

new RetryStrategyOptions<HttpResponseMessage>
{
    ShouldHandle = new PredicateBuilder<HttpResponseMessage>()
        .Handle<HttpRequestException>()
        .HandleResult(r => r.StatusCode == HttpStatusCode.ServiceUnavailable),
    MaxRetryAttempts = 3
};

Temporisation constante ou exponentielle

Retenter immédiatement peut accabler un service déjà en difficulté. La temporisation espace les tentatives. Polly prend en charge les temporisations constante, linéaire et exponentielle via le paramètre BackoffType.

Temporisation exponentielle

La temporisation exponentielle double le délai à chaque tentative, par exemple 2 s, 4 s, 8 s. Définissez BackoffType.Exponential avec un Delay de base.

new RetryStrategyOptions
{
    MaxRetryAttempts = 4,
    BackoffType = DelayBackoffType.Exponential,
    Delay = TimeSpan.FromSeconds(2)
};

Ajouter une variation aléatoire

Si de nombreux clients retentent selon le même calendrier, ils créent des pics synchronisés, un « effet de troupeau déchaîné ». La variation aléatoire ajoute du hasard aux délais. Activez UseJitter = true.

new RetryStrategyOptions
{
    MaxRetryAttempts = 4,
    BackoffType = DelayBackoffType.Exponential,
    Delay = TimeSpan.FromSeconds(1),
    UseJitter = true
};

Réagir à chaque nouvelle tentative

La fonction de rappel OnRetry vous permet de journaliser les tentatives ou d’émettre des métriques. Elle reçoit le numéro de tentative et la défaillance qui l’a déclenchée.

new RetryStrategyOptions
{
    MaxRetryAttempts = 3,
    OnRetry = args =>
    {
        Console.WriteLine($"Retry {args.AttemptNumber} after {args.RetryDelay}");
        return default;
    }
};

Limiter la durée totale des nouvelles tentatives

Des nouvelles tentatives sans limite peuvent faire attendre l’utilisateur trop longtemps. Combinez les nouvelles tentatives avec une stratégie de délai d’expiration, abordée plus loin, ou limitez le nombre de tentatives afin que l’opération échoue rapidement lorsque la récupération est peu probable.

Nouvelles tentatives pour HttpClient

Pour les appels HTTP, enregistrez un gestionnaire de résilience sur HttpClient afin que les nouvelles tentatives s’appliquent automatiquement à chaque requête.

builder.Services.AddHttpClient("api")
    .AddResilienceHandler("retry", pipeline =>
    {
        pipeline.AddRetry(new HttpRetryStrategyOptions
        {
            MaxRetryAttempts = 3,
            BackoffType = DelayBackoffType.Exponential
        });
    });

Vérification rapide

Vérifiez vos connaissances sur les nouvelles tentatives.

Récapitulatif

Les stratégies de nouvelle tentative gèrent les défaillances transitoires en retentant une opération. Avec Polly v8, vous construisez une chaîne avec AddRetry, vous limitez les défaillances prises en charge avec ShouldHandle et vous espacez les tentatives à l’aide de BackoffType.Exponential et de UseJitter. Utilisez OnRetry pour observer les tentatives et enregistrez un gestionnaire de résilience pour protéger chaque appel à HttpClient.

Questions Fréquemment Posées

La leçon « Politiques de nouvelle tentative » est-elle gratuite ?

Oui — le texte complet de « Politiques de nouvelle tentative » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Politiques de nouvelle tentative » ?

Réessayez après des échecs temporaires avec temporisation progressive. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Politiques de nouvelle tentative » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Politiques de nouvelle tentative
  2. Modèle du coupe-circuit
  3. Politiques de délai d’expiration et de solution de repli
  4. Pipelines de résilience
← Retour à C# Academy