当使用Net::HTTP
作为适配器时,用户会对Net::HTTP
提供的重试策略感到惊讶。 这带来了不同的“问题”(例如#612 和#771)。
对于 Ruby <= 2.4,我们无能为力,但是 Ruby 2.5 为Net::HTTP
提供了一个新的max_retries
配置,因此 Faraday 应该在可用时自动设置它。
请参阅问题 #612 和 #771。
我一直在研究这个问题。 #771 中提到的一种方法是将默认值设置为 0,但根据配置的重试次数进行更改。 我们必须让 Retry 中间件知道底层适配器(因为某些适配器可能不支持这一点),并有条件地在env
应用此逻辑。 适配器还必须知道重试次数。
作为上述方法的替代方案,我们可以将其设置为不进行重试,而是将重试逻辑限制在 Retry 中间件中。 无论结果如何,我都非常乐意接受@iMacTia 。
我肯定在考虑第二种选择。
我们已经有了可以处理重试失败请求的 Retry 中间件。
适配器(在本例中为 Net::HTTP)不应自行重试请求。
在这种情况下,我们需要做的就是告诉 Net::HTTP 适配器将max_retries
为 0,当然,如果此属性可用
@iMacTia - 我完全同意。 在这种情况下,我会选择这个。