比如調用第三方 API 時,如果返回超時或連接異常,可以通過 Polly 自動重試,避免用戶體驗受到影響。

指數后退(Exponential Backoff)

指數后退是 Polly 提供的一種高級重試策略。每次重試之間的延遲時間呈指數增長,可以有效防止過于頻繁的重試導致系統壓力增加。

代碼示例:指數后退策略

var retryPolicy = Policy
    .Handle()
    .WaitAndRetry(
        retryCount: 3,
        sleepDurationProvider: attempt => TimeSpan.FromSeconds(Math.Pow(2, attempt)),
        onRetry: (exception, retryCount, context) =>
        {
            Console.WriteLine($"Retry {retryCount} due to {exception.Message}");
        });

相關圖片鏈接:

斷路器策略(Circuit Breaker)

斷路器策略可以在服務持續失敗時暫時停止請求,避免系統資源被耗盡。

代碼示例:重試與斷路器的組合

var circuitBreakerPolicy = Policy
    .Handle()
    .CircuitBreaker(
        exceptionsAllowedBeforeBreaking: 3,
        durationOfBreak: TimeSpan.FromSeconds(30),
        onBreak: (ex, breakDelay) =>
        {
            Console.WriteLine($"Circuit broken due to {ex.Message}");
        },
        onReset: () =>
        {
            Console.WriteLine("Circuit reset.");
        });

var policyWrap = Policy.Wrap(retryPolicy, circuitBreakerPolicy);

相關圖片鏈接:

IronPDF 與 Polly 的結合使用

IronPDF 是一個功能強大的 .NET PDF 庫,支持將 HTML、CSS 轉換為 PDF 文件。結合 Polly,可以優雅地處理在生成 PDF 過程中可能出現的瞬態故障。

安裝 IronPDF 和 Polly

在項目中使用以下命令安裝 IronPDF 和 Polly:

Install-Package IronPdf
Install-Package Polly

示例:使用 Polly 重試生成 PDF

以下代碼展示了如何模擬從 API 獲取數據,并在生成 PDF 時處理瞬時故障。

代碼示例:


using IronPdf;
using Polly;

var retryPolicy = Policy
    .Handle()
    .WaitAndRetryAsync(
        3,
        retryAttempt => TimeSpan.FromSeconds(2),
        (exception, retryCount, context) =>
        {
            Console.WriteLine($"Retry {retryCount} due to {exception.Message}");
        });

var pdf = await retryPolicy.ExecuteAsync(async () =>
{
    var data = await FetchDataFromExternalApiAsync();
    return GeneratePdfFromData(data);
});

pdf.SaveAs("GeneratedDocument.pdf");

static async Task FetchDataFromExternalApiAsync()
{
    // 模擬外部 API 數據獲取
    await Task.Delay(100);
    throw new HttpRequestException("Failed to fetch data");
}

static PdfDocument GeneratePdfFromData(string data)
{
    var renderer = new ChromePdfRenderer();
    return renderer.RenderHtmlAsPdf($

上一篇:

Siri 的 API Key:全面指南及應用

下一篇:

Cohere模型名稱:探索新一代AI模型的力量
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費