当前位置: 首页 > 知识库问答 >
问题:

如何根据异常创建条件WaitAndRetry或WaitAndRetryForever?

微生弘
2023-03-14

以下是我的尝试:


        private Policy retryPolicy { get; } = Policy
            .Handle<IOException>()
            .WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));
        private Policy bigFilePolicy { get; } = Policy
            .Handle<UnauthorizedAccessException>()
            .WaitAndRetryForeverAsync(retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));

        retryPolicy.ExecuteAsync(() => bigFilePolicy.ExecuteAsync(command));

我正在尝试为自动文件上传系统制定重试策略。当文件太大时,要在文件夹中删除需要一些时间,而当它加载时,我的程序会给出一个未经授权的访问异常,在这种情况下,我会考虑为大文件允许“waitandretryforever”。否则,如果它获得其他异常,则不应永远重试。

共有1个答案

申博厚
2023-03-14

要将策略混合在一起,需要调用policy.wrap/policy.wrapAsync。例如,您可以执行以下操作:

var exponentialBackoffPolicy = Policy.WrapAsync(retryPolicy, bigFilePolicy);

甚至:

var exponentialBackoffPolicy = retryPolicy.WrapAsync(bigFilePolicy);
 类似资料:
  • 问题内容: 我有一个名为@status的变量,该变量在此select语句之前设置: 我只想选择if列,否则我想为shipwith选择null。我该如何完成? 问题答案:

  • 问题内容: 我正在尝试创建一个xml文件。当我创建该文件时,出现此错误。我真的不知道它是什么。这是一个非常奇怪的错误。文件创建正确,但是里面没有任何内容。 这是我用来创建xml文件的代码: 我在transfomer method中遇到了异常。知道我得到了什么错误吗? 问题答案: 这是某种配置问题,是由于您在编译代码时与在运行时在类路径上的代码不同而在类路径上使用了不同的JAR所致。

  • 当面对选择抛出异常的类型时,您可以使用由别人编写的异常 - Java平台提供了许多可以使用的异常类 - 或者您可以编写自己的异常类。 如果您对任何以下问题回答“是”,您应该编写自己的异常类;否则,你可以使用别人的。 你需要一个Java平台中没有表示的异常类型吗? 如果用户能够区分你的异常与由其他供应商编写的类抛出的异常吗? 你的代码是否抛出不止一个相关的异常? 如果您使用他人的例外,用户是否可以访

  • 我有两个熊猫数据帧:一个带有ID和值,另一个将ID与其他ID映射。目标是创建一个基于df1的新数据帧。它循环遍历df1中的每个源ID,并查看df2(一个映射df)以查找源ID中的匹配项。如果找到匹配项,将创建与df1中的值相同的新行。因此,如果找到多个匹配项,循环将创建多个行(例如id A和C)。如果只找到一个匹配项(例如id B),则只创建一行。 下面的代码完全符合我的要求,但速度非常慢。在我的

  • 问题内容: 假设我有某种类型: 现在我想基于这种类型创建一个临时表,我该怎么做? 同样,从此:基于用户定义的类型创建表: 问题答案: [\Pure.Krome的答案)显示了如何使用表变量而不是#temp表。如果您确实想要基于已知表类型的#temp表(而不必知道列名/定义),则可以说: 现在,应与表类型的表结构匹配,减去约束(以及从SQL Server 2014开始的边际有用的二级索引)。 当然,随

  • 我需要帮助完成一项看似简单的任务。我想基于< code>dplyr::mutate中的一个条件创建几个新变量。我可以使用< code>ifelse创建一个新变量,但是我想一步创建几个。 让我们假设这是我的数据帧。 我想要这样的东西: 因此,if条件应该基于条件< code>y创建三个新变量 我想与< code>if_else和< code>case_when一起使用。 谢谢转发