问题标签 [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 投票
3 回答
7230 浏览

algorithm - 为什么将随机抖动应用于退避策略?

这是我见过的一些示例代码。

我想知道在这里使用随机抖动有什么好处?

0 投票
1 回答
480 浏览

php - ExponentialBackoff 作业重新加载函数错误:调用未定义的方法

运行下面的 php 脚本时出现以下致命错误:

等待作业完成

.

它看起来像'虽然没有加载适当的类?我使用的 composer.json 是:

关于我为什么会遇到此错误的任何想法?谢谢!

0 投票
1 回答
1676 浏览

python - 在 Python 中,是否可以对批处理 HTTP 请求的每个请求使用“指数退避”?

因此,我在这里编写了一个脚本,可以将学生添加到课程中(Google Classroom API)。

确实有效,但是,有时个别请求会返回:

“请求https://classroom.googleapis.com/v1/courses/[COURSE ID]/students?alt=json时的 HttpError 500返回“内部错误””

对于这些单独的请求,我想编写代码,以便在收到 5xx 错误时重试单个失败的请求。我不确定如何实现这一点。

目前,即使只有 1 个学生没有参加课程,我也不得不重新运行整个脚本,这当然是一种资源浪费。

0 投票
1 回答
306 浏览

node.js - 达到速率限制后的退避策略

当您达到 的速率限制时getstream,API 开始响应错误。

作为退避策略来处理这些故障并在此之后开始恢复的推荐方法是什么?我考虑过将它们全部记录下来,并在一分钟或一小时后再次发送它们。

但是如果用户创建了一个帖子(在 getstream 上创建失败,等待退避),同时用户删除了它怎么办。即使用户删除它,退避脚本也会发送post到。getstream

有什么建议getstream或任何人处理过这样的情况?

0 投票
1 回答
12179 浏览

apache-kafka - 使用 spring-kafka 保证消息顺序的指数退避

我正在尝试实现一个基于 Spring Boot 的 Kafka 消费者,它具有一些非常强大的消息传递保证,即使在出现错误的情况下也是如此。

  • 必须按顺序处理来自分区的消息,
  • 如果消息处理失败,应该暂停特定分区的消费,
  • 应该使用退避重试处理,直到成功。

我们当前的实现满足这些要求:

但是,在这里,记录被消费者永远锁定。在某些时候,处理时间会超过max.poll.interval.ms,服务器会将分区重新分配给其他消费者,从而创建一个副本。

假设max.poll.interval.ms等于 5 分钟(默认)并且失败持续 30 分钟,这将导致消息被处理 ca. 6次。

另一种可能性是在重试 N 次(例如 3 次尝试)后将消息返回到队列,方法是使用SimpleRetryPolicy. 然后,将重播消息(感谢SeekToCurrentErrorHandler),处理将从头开始,再次尝试最多 5 次。这会导致延迟形成一系列,例如

这比不断上升的要少:)

是否有任何第三种情况可以使延迟形成一个上升系列,同时在上述示例中不产生重复?

0 投票
1 回答
415 浏览

java - 在批处理请求中多次从谷歌客户端 http 响应中读取内容

按照Google Drive REST API 文档,我正在为可恢复的 API 错误实施指数退避策略。如果错误代码是 500 或 403(可能是 429),我想重试我的请求,但我注意到并非所有 403 错误都是可恢复的,所以我只想重试那些在选定列表中有原因的错误. 错误原因未在响应中作为单独的信息提供,但它包含在内容输入流中,我对其进行了解析和处理:

这工作正常,但会消耗内容。在批处理请求执行过程中,google客户端再次尝试读取和解析内容,发现什么都没有,抛出异常。我尝试标记和重置 response.getContent() 输入流,但 Google 的 HttpResponse 不支持标记。有没有其他方法可以让内容再次可用,或者在不消费的情况下阅读它?

如果重要的话,我使用的是 GoogleNetHttpTransport。

0 投票
1 回答
161 浏览

python - 装饰可调用类的属性访问

我有一个可调用的类:

这似乎像宣传的那样工作:

我想用指数退避来装饰它:

现在看起来属性访问停止工作:

我的问题:谁将 name 复制n_callsf2的命名空间中,为什么?现在它拥有一个陈旧的值 - 正确的值应该是 3:

0 投票
1 回答
3515 浏览

spring - 在 AWS 中为 SQS 定义 BackoffStrategy

我想在 Spring 应用程序中为 sqs 设置退避策略。我所做的是:

,但没有效果。@JmsListener我通过简单的方法从 SQS 队列中读取。在此方法中调用其他 api。这个 api 返回我 404 错误。然后是重试,但它是即时重试。为什么会这样,如何使用指数退避策略正确配置它?它正在重试,但没有指数延迟时间。

0 投票
1 回答
1572 浏览

django - Kubernetes中的指数退避?

我是 kubernetes 的新手,我无法跟踪我在 Jmeter 负载测试中观察到的响应时间的指数退避信号。我有一个 kubernetes 服务,它在 4-32 个 pod 之间运行,具有水平 pod 自动缩放功能。每个 pod 都运行一个 Gunicorn WSGI,为 django 后端提供服务。所有不同的 k8s 服务都在 nginx 反向代理之后,它将传入的流量直接重定向到服务的 VIP。Nginx 位于暴露于最终用户网络流量的 Amazon ELB 后面。ELB 最终会在 60 秒后超时请求。

每个 gunicorn 服务器运行一个带有 3 个 greenlets 的 worker,并且积压限制为 1。因此它在任何给定时间只能处理 4 个请求,并且对于 nginx 尝试发送的任何额外请求立即返回错误响应。我猜想这些错误请求随后会被捕获并使用指数退避重试,但我无法确定这是在哪里发生的。

据我所知,nginx 不能成为指数重试的来源,因为它只为请求提供一个上游端点。而且我在文档中找不到任何讨论在 kubernetes 路由的任何阶段对错误响应进行指数定时重试的内容。k8s 集群在 1.9 版本上运行。

0 投票
0 回答
30 浏览

java - 现有框架用于实现具有身份验证/授权和指数退避的 REST-ful API 框架

我想知道是否有现有的框架来构建具有身份验证/授权和指数退避等额外功能的 REST-ful API。我正在寻找类似功能的框架与 Google 的Cloud API没有什么不同。我知道我可以重新发明轮子并使用Spring-Boot 之类的框架实现一个本土解决方案,但我想知道是否已经有一些可用的或开源的东西可以使用。

对于指数退避等功能,我可以想象如何跟踪用户请求并在请求过于激进时拒绝它们的工程和设计问题。对于身份验证/授权等功能,这可能会变得非常棘手(用户管理/注册、令牌生成……)。

如果在 HOWTO 架构师上有任何代码示例或小项目并实现这样的 REST-ful 服务,我也将不胜感激。