问题标签 [exponential-backoff]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
906 浏览

java - 带有退避和重试限制的演员重试

我需要在重试和最大重试限制之间增加时间的 akka 演员的重试机制。为此,我正在尝试使用 akka 提供的 BackOffSupervisor 模式。问题是,从我的测试来看,退避策略和重试限制似乎不起作用。或者问题出在测试中?

测试看起来像这样:

一个在前 5 条消息中抛出异常的简单 actor

}

BackOffSupervisor 配置

以及测试方法

测试结束太快了。在一秒钟内,从 BackoffSupervisor 的配置开始,我预计至少需要 50 多秒。

0 投票
1 回答
303 浏览

java - Observable.timer rxjava 不适用于指数回退

如果网络关闭或给定服务关闭,我正在尝试通过 Observable.timer 设置指数回退。当出现错误时,我有一个 retryWhen。

我有两个问题,我无法让计时器工作,无论时间设置如何,它总是立即运行。根据我在文档中所知道的,它应该运行延迟然后发送一个完整的,但是当我查看日志时,我没有看到任何延迟。

其次是因为我想在返回时获取重试的值,所以我使用订阅来获取它,但是当返回 Observable 错误时,它会在我进行计算时引发异常。对于第二个问题,我计划检查 Observable 的类型并根据类型对其进行操作。

如果我能对我可能做错的事情有所了解,那就太好了

0 投票
0 回答
3354 浏览

c# - 使用指数退避计算延迟

我正在根据以下页面上的 Microsoft 示例代码编写自己的带有指数退避的重试逻辑:https ://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/explore-自定义 http-call-retries-exponential-backoff

在下面的代码行中有一个我无法理解的除以 2:

假设我定义int m_delayMilliseconds = 200了 ,所以我们得到以下延迟:

200 * 1 / 2 --> 100 毫秒

200 * 2 / 2 --> 200 毫秒

200 * 4 / 2 --> 400 毫秒

200 * 8 / 2 --> 800 毫秒

200 * 16 / 2 --> 1600 毫秒

. . . 等等

令我不安的是,我的第一个延迟为 100 毫秒,但我希望最小延迟为 200 毫秒,如定义的那样。谁可以给我解释一下这个?

0 投票
2 回答
1025 浏览

swift - 有没有办法使用 Alamofire 进行指数退避重试

我正在尝试使用 Alamofire 实现指数回退重试逻辑,以防服务器由于某些端点的某些原因返回 500。

有没有办法可以用 Alamofire 实现这一目标?请举例指导。

提前致谢。

0 投票
3 回答
3289 浏览

spring - 有条件地具有指数退避的弹簧反应重试

使用spring响应式WebClient,我使用一个API,如果响应状态为500,我需要使用指数退避重试。但是在 Mono 类中,我没有看到任何以 Predicate 作为输入参数的 retryBackoff。

这是我搜索的那种功能:

现在我的实现如下(我没有使用 backOff 机制重试):

0 投票
1 回答
247 浏览

math - 指数退避

假设我有等式 T = sum(A**n) for n 从 1 到 M。

现在假设我知道 M 和 T,但想要 A。我将如何解决 A?

我想在发生错误时进行指数退避,但我不希望退避所花费的总时间大于 T,也不希望最大重试次数超过 M。所以我需要找到 A .

0 投票
1 回答
831 浏览

c# - Polly 断路器可以有指数的 durationOfBreak 吗?

当由于连接池耗尽而收到超时异常时,我们正在尝试为我们的数据库逻辑实施重试策略。当我们在短时间内出现异常大的活动高峰时,就会发生这种情况。我们增加了最大池大小来尝试避免这种情况,但我们也希望将重试逻辑作为备份计划。

连接池的文档指出:

启用连接池后,如果发生超时错误或其他登录错误,将引发异常,随后的连接尝试将在接下来的五秒内失败,即“阻塞期”。如果应用程序在阻塞期内尝试连接,将再次抛出第一个异常。阻塞期结束后的后续故障将导致新的阻塞期是前一个阻塞期的两倍,最长为一分钟。

Polly 似乎很适合解决这个问题,它通过策略包装结合了 Fallback、WaitAndRetry 和 Circuit Breaker 策略。这里有一张很好的照片

理想情况下,我希望能够为断路器指定指数 durationOfBreak 以匹配上述加倍周期。我在网上没有看到任何关于这如何可能的例子,所以也许这是不可能的?

这里所需的配置方法是什么?是否指定一个具有 5 秒 durationOfBreak 的断路器,然后对 5、10、20、40 和 60 秒的 WaitAndRetry 组件使用指数重试?如果连接刚刚变得可用并且您的旧操作刚刚开始等待 40 秒,而新操作将立即起作用,这似乎很不幸。

另一种可能性是有一个 5 秒的 durationOfBreak ,然后让 WaitAndRetry 组件使用一个非常小的等待并进行大量重试,即使我们知道如果这些重试中的许多重试在文档状态之前出现,它们也会失败。

感谢您的反馈!

0 投票
1 回答
191 浏览

api - 使用 ratelimit 库处理公司房屋费率限制

我正在使用公司内部 API来提取数千个公司的资料

正常速率限制为 600/5 分钟,但可以延长至 1200/5 分钟。我上周使用了这个脚本,它工作了几个小时,现在我不断收到 429 错误。

我认为脚本很好,但我可能缺少ratelimitbackoff库中的装饰器的某些内容,也许有人更熟悉这些库并看到我没有看到的逻辑错误。

我不断得到一个

raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 429 Client Error: Too Many Requests for url: ...

我的逻辑有什么问题,或者这可能是在 API 方面?

0 投票
1 回答
95 浏览

web-scraping - 如何将退避脚本插入我的网络抓取

我想在我的网络抓取中使用包“Backoff”,但我无法让它工作。我在哪里插入它?如何让“r = requests...”仍然被识别?

我尝试以各种方式将该语句放入我的代码中,但它不起作用。我希望能够将其用于预期目的的包。谢谢!

要插入的代码

现有代码:

我希望“退避”代码按照代码中的设计工作,以重试 500 个错误并且没有失败

0 投票
0 回答
221 浏览

python-3.x - 如何为删除 EBS 快照的 AWS Lamba 函数实施指数退避

背景:我对 AWS 管理控制台非常陌生,我刚刚创建了一个非常简单的 AWS Lambda 函数(Python 3.7),它根据时间限制删除 EBS 卷快照。我还创建了一个 CloudWatch 事件以在一天中的每个小时触发该函数。这适用于一些卷,但随着卷的增加,这会导致成本/速度问题。

问题:我正在尝试更新我的 EBS 快照删除 lambda 函数代码以找到请​​求的速率限制以避免节流,并使用它为程序创建指数退避/重试模型(使程序无论有多少快照都可扩展)是)。我假设有一个特殊的 API 调用可以帮助我解决这个问题,但我无法在网上找到任何具体信息。任何帮助将非常感激!在下面粘贴我当前的代码: