问题标签 [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.
c++ - C++ LibCurl 重试错误
我想在我的 C++ 程序中重试 curl 连接 5 次。当它连续 5 次失败时,它应该停止程序的执行。但是,它在此时出现第一个错误后停止。我能够捕捉到错误,但是我不知道如何执行之前的 curl 连接。例如,使用 jQuery,我可以使用类似$.ajax(this);
. 对于 C++ 中的 LibCurl,我正在寻找类似的解决方案。
我当前的 LibCurl 代码如下所示,请注意,我使用了多个 curl 连接,这些连接都有其他设置,因此我想要一个通用方法,可以用于我的LibcurlError
函数中的所有 LibCurl 错误,也包括在下面。
firebase - FCM:重试后和指数退避
据我了解,当消息无法传递时,Retry-After 标头有时包含在响应中,有时不包含。但是,如果我首先收到包含 Retry-After 的错误响应,然后重新发送消息并收到另一个错误响应但没有 Retry-After,会发生什么?我知道我应该使用指数退避,但是当之前的等待时间来自 Retry-After 标头时,它是如何工作的?
想象一下这个请求和响应序列:
在发送请求 4 之前我应该等待多长时间?8 秒?还是从 2 秒开始?
c# - 如何使用 Pathoschild lib 中的 SetRequestCoordinator?
我故意将超时设置为非常低,以使 http 调用崩溃以测试重试功能,但引发了异常,因此 httpClient 没有重试先前的请求。
起初我以为只有在 maxRetry 配置的一些尝试失败(HTTP 代码 500)之后,才会引发异常。
所以我的代码逻辑被破坏了,如果我强制执行再次执行 API 调用PostAsync
,重试功能将毫无用处,代码也很脏。
System.AggregateException:发生一个或多个错误。--->
System.Threading.Tasks.TaskCanceledException:任务被取消。
--- 内部异常堆栈跟踪结束 ---
System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
在 System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification)
在 System.Threading.Tasks.Task 1 .get_Result()
at xxx.xx.xxQueryPrivate[T](ApiClient apiClient, String myHTTPMethod, String _RelativeURL, Int32 _myTimeOut, Object _payload) in zzz.cs:line 337
java - 捕获后重试
这是我使用的逻辑:
重试次数也在考虑原始操作。但问题是
- 如果我直接从 try 块返回而不分配任何内容,则 SCA(Fortify for me)报告未读取变量 retries(在成功流程中),并且
- 如果我按上述方式分配和执行,则 SCA 会大声疾呼立即将值重新分配给 retries 变量,甚至无需读取它。
注意事项:
- 第一次调用应该独立于我们为“重试”读取的任何值
- 应该避免重复代码,避免递归也很好。
可能是一件简单的事情,但我可能没有抓住它。请建议。
java - 在 RestTemplate 拦截器中调用 execution.execute() 两次
我必须与需要随每个请求一起发送访问令牌的外部服务集成。访问令牌的过期时间很短(只有几个小时)。我决定以乐观的方式使用访问令牌。我将使用当前令牌调用外部服务。如果遇到 401,我将刷新令牌并再次调用外部 API。
我决定使用 ClientHttpRequestInterceptor 来实现描述的重试机制。
我已经对其进行了测试并且可以正常工作,但是是否允许调用 execution.execute() 两次?我没有找到任何禁止它的信息,但另一方面我也没有看到这样的代码。
amazon-web-services - 在 AmazonSQSClient 上重试
我正在使用 AmazonSQSClient 与 SQS 服务交互并使用默认客户端配置,这意味着它已经在使用 DEFAULT_RETRY_POLICY。
假设我在我的 Java 代码中调用了“ sendMessage ”方法。
根据文档,该方法可以抛出 2 种类型的异常:InvalidMessageContentsException 和 UnsupportedOperationException。
现在假设 SQS 服务由于某种原因不可用,即使重试后 SQSClient 也无法执行 sendMessage 操作。我试图了解如何在我的 Java 代码中了解这一点。我可以捕捉到上述异常,但我认为这些异常不会有我需要的信息。它们似乎与无效消息或不受支持的操作更相关。
我错过了什么吗?想法?
java - Spring @Retryable 针对特定条件
是否可以根据某些条件重试?如果我使用 Retryable 进行注释,它将根据一些异常重试,但如果捕获到该异常并满足相应条件,我想重试。例子:
在上面的请求中,我有一个标志,isRetryRequired如果这是真的并且 MyException 被捕获,那么我想重试
ios - 重试 URLSession dataTask 的模式?
我对 iOS/Swift 开发相当陌生,我正在开发一个向 REST API 发出多个请求的应用程序。这是检索“消息”的其中一个调用的示例:
当然,此请求可能因多种不同原因而失败(服务器无法访问、请求超时、服务器返回 200 以外的值等)。如果我的请求失败,我希望能够重试它,甚至可能在下一次尝试之前有延迟。我在 Apple 的文档中没有看到任何关于这种情况的指导,但我发现了一些关于 SO 的相关讨论。不幸的是,这两个都是几年前的,并且在我从未使用过的 Objective-C 中。在 Swift 中做这样的事情是否有任何常见的模式或实现?
java - 如何使用 hystrix 重试
我有一个封装 REST 调用的 hystrix 命令。如果发生故障(例如超时),我想进行一次重试并在仍然失败时返回适当的错误。
如我所见,Hystrix 不支持重试。使用 Hystrix 的唯一方法是将主要逻辑放入 getFallback() 方法中。但它看起来并不正确。
那么,用 hystrix 实现超时的正确方法是什么?
groovy - JMeter Groovy 在条件下重新执行采样器 X 次
我想重新执行采样器 5 次或直到某个变量的值为“true”,Groovy 中是否有任何方法或者我必须在 JMeter 中做些什么?