Polly 超时

配置基础在重试机制篇章已经说明,这里不再重复。

对方法执行进行超时处理。

 

// 超时,如果执行的委托尚未完成,请在30秒后返回到调用方。 乐观超时:代表应参加并遵守CancellationToken
Policy
  .Timeout(30)

// 将超时配置为时间跨度
Policy
  .Timeout(TimeSpan.FromMilliseconds(2500))

// 通过功能提供程序配置变量超时
Policy
  .Timeout(() => myTimeoutProvider)) // Func<TimeSpan> myTimeoutProvider

// 超时,如果操作超时则调用操作
Policy
  .Timeout(30, onTimeout: (context, timespan, task) => 
    {
        // 添加超时发生时要调用的额外逻辑,例如日志记录
    });

// 例如超时,记录执行超时:
Policy
  .Timeout(30, onTimeout: (context, timespan, task) => 
    {
        logger.Warn($"{context.PolicyKey} at {context.OperationKey}: execution timed out after {timespan.TotalSeconds} seconds.");
    });

// 例如超时,在超时任务完成时捕获超时任务中的所有异常:
Policy
  .Timeout(30, onTimeout: (context, timespan, task) => 
    {
        task.ContinueWith(t => {
            if (t.IsFaulted) logger.Error($"{context.PolicyKey} at {context.OperationKey}: execution timed out after {timespan.TotalSeconds} seconds, with: {t.Exception}.");
        });
    });

 

 

参考:

https://github.com/App-vNext/Polly#timeout

https://github.com/App-vNext/Polly/wiki/Timeout

 

posted @ 2021-02-26 12:46  delafqm  阅读(394)  评论(0)    收藏  举报