问题标签 [retry-logic]

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 回答
212 浏览

quartz - 石英重试/失火

我对 Quartz 有一个理解问题:如果在作业的执行 (...) 中发生异常 - 这算作失火还是在这种情况下我必须担心自己重试?或者换句话说:我想要一个(简单的)触发器,只有一次成功的镜头,但如果执行失败,重试直到成功三次。我该如何配置?

0 投票
0 回答
619 浏览

python - Python线程每X秒重试一次,最多Y分钟

我正在尝试在 Python 中实现客户端-服务器架构,我有:

  • 服务器应用
  • 可以通过 API 订阅更新的客户端列表(向 /subscribe 端点发送 POST 请求)。

它工作正常。在服务器端,我有一个订阅者的 URL 列表。

主要思想是每 X 秒从服务器向所有订阅的客户端发送请求(类似于监控系统)。

我正在尝试使用线程来完成这部分:

或多或少它有效,但我需要改进一点。预期的行为是:服务器应每 X 秒向每个订阅的客户端发送通知。如果向某个客户端发送通知失败 Y 分钟(例如 5 分钟),它应该取消订阅这个无响应的客户端。

是否有一些最佳实践?

0 投票
0 回答
129 浏览

selenium-webdriver - dependsOnMethods 或 dependsOnGroups 和 RetryAnalyzer 的组合

当测试失败并在使用 IRetryAnalyzer 实现重试后通过时,将跳过所有相关测试。

我尝试删除失败和跳过的测试结果,如下所述,但它似乎仍然不起作用。

任何帮助或见解将不胜感激。谢谢!

测试NG版本

最新 (6.14.3)

预期行为

实际行为

0 投票
2 回答
647 浏览

selenium - testng重试分析器不工作

我在关注几个不同的网站,解释如何使用 RetryAnalyzer(他们都说基本相同的东西,但我检查了几个,看看是否有任何区别)。我按照他们在示例中所做的那样实现,并故意在第一次运行时导致失败(最终成为唯一的运行)。即使失败了,也没有重复测试。我什至在分析器的第一行放置了一个断点(res = false)。从来没有被击中。我告诉它尝试 3 次,但它根本没有重试。我错过了什么吗?我的示例如下:这与设置计数器 = 0 有关吗?但是“res = false”至少应该受到打击?

测试通常通过。我故意让它失败,但它没有重试。我错过了什么吗?

================================================= 默认套件

总测试运行:1,失败:1,跳过:0

0 投票
2 回答
1287 浏览

javascript - RxJS 重试整个链

我从实时流中读取图像并定期选择一批。然后我将它们发送到服务器进行验证。如果任何验证失败,将引发 HTTP 错误。如果发生这种情况,我想获得一批新图像。

我遇到的问题是只有 HTTP 请求被重试,因为那是新的 observable。必须有某种方法将链的开头封装到单个 Observable 中?

0 投票
3 回答
957 浏览

c# - 有没有办法可以延迟 Azure 函数中服务总线消息的重试?

我有一个从订阅中提取消息并将它们转发到 HTTP 端点的函数。如果端点不可用,则会引发异常。发生这种情况时,我想将该特定消息的下一次尝试延迟一段时间,例如 15 分钟。到目前为止,我已经找到了以下解决方案:

  • 捕获异常,休眠,然后抛出。这是一个糟糕的解决方案,因为我会在它休眠时对 CPU 使用付费,并且会影响函数的吞吐量。
  • 捕获异常,克隆消息,设置ScheduledEnqueueTimeUtc属性并将其添加回队列。这是一种更好的方法,但它会重置传递计数,因此实际问题永远不会是死信,并且当只有一个订阅者未能处理它时,它会重新发送给所有订阅者。
  • 捕获异常,并将消息放在存储队列中。这意味着维护一个存储队列以匹配每个订阅,并具有两个功能而不是一个。

我最理想的情况是捕获异常,并在不释放消息锁定的情况下退出函数。这样,一旦锁过期,消息将再次重试。但是,似乎在成功完成后,该函数调用Complete()了消息,并在抛出异常后,该函数调用Abandon()了该消息。是否可以绕过这一点,或者以其他方式实现延迟?

0 投票
2 回答
1474 浏览

go - 如何模拟 HTTP 调用的第二次尝试?

作为我的第一个项目的一部分,我正在创建一个小型库来向任何用户发送 SMS。如果第一次没有收到肯定状态,我已经添加了等待和重试的逻辑。这是对短信发送服务的基本 HTTP 调用。我的算法看起来像这样(评论将解释代码的流程):

现在我想使用任何可用的 HTTP 模拟框架来测试这个逻辑。我得到的最好的是https://github.com/jarcoal/httpmock

但是这个不提供分别模拟第一个和第二个 URL 响应的功能。因此,我无法在第二次或第三次重试中测试成功。我可以先测试成功,也可以完全失败。

是否有适合我测试此特定功能的需求的软件包?如果不是,我如何使用当前工具实现这一目标?

0 投票
1 回答
1359 浏览

selenium - 重试逻辑 - 如果一个测试失败,重试整个班级 - selenium

以下是用于实现重试逻辑的类

测试重试类:

重试监听类:

样品测试:

当我执行上述测试时,以下是输出 firsttest 被执行并通过 secondtest 依赖于 firsttest 并被执行,它失败 - 重试 3 次并再次失败,因为它取决于 secondtest,所以跳过了第三次测试。

产出达到预期。

问题:因为测试是依赖的。如果其中一个测试失败,我想从头开始执行整个课程。有办法吗?

示例:如果 secondtest 失败,我想再次执行整个类 SampleTest。

谢谢!

0 投票
1 回答
1738 浏览

java - 当函数在y时间间隔内抛出异常时重试函数调用n次

我想在一段时间内失败时重试我的函数调用。最好的方法是什么。这会正常工作吗。

0 投票
2 回答
1114 浏览

java - 在流中的任何阶段失败时重试akka中的流

我正在使用 akka 流来处理我的数据。其中我有 1 个由元素 UUID 组成的源。

流程如下:

  1. 正在从某个第三方 HTTP 服务获取元素,该服务返回完整的元素及其属性。
  2. 然后我从该元素中检索所需的数据并将其转换为我的应用程序可以理解的对象。
  3. 然后我将该对象中的数据写入数据库。
  4. 最后,我用流中所有元素的状态更新数据库。

现在我想向这个流程添加重试机制,以便如果流程中的任何阶段失败,它应该重试该阶段一段时间,比如 3 次,如果之后它失败,那么应该发生流的唯一失败。例如,如果第三方服务存在一些问题,例如 HTTP 504 错误,那么大部分时间在重试此元素成功后。那么akka有什么方法可以实现这一点。

目前,我正在维护 1 个列表来存储所有失败的元素 ID,如下所示。

代码 :