在202响应上重试POST请求 - 法拉第宝石

时间:2018-05-30 11:18:44

标签: ruby-on-rails ruby http faraday

每次获得202 http状态作为回复时,我需要Faraday重试 POST 请求。我知道this module,但我还没有真正了解如何使用它,因为202不会抛出错误或其他内容而 retry_if:阻止是没有要求202回应。

我在this middleware取得了一些成功,但它仅重新发送一次请求,而202次响应可能连续发生2次。

我想知道是否有人可以使用retry模块或法拉第中间件向我展示一种方法。

1 个答案:

答案 0 :(得分:0)

从理论上讲202是成功的https://httpstatuses.com/202,它接受​​了异步请求,因此您实际上只需要发送一次帖子,如果收到202,就可以完成工作。该链接指出“ HTTP中没有用于从异步操作重新发送状态代码的工具。”因此,我认为您确实需要以另一种方式检查完成情况。但是,您可以执行以下操作(只是在这里吐痰):

   conn = Faraday.new(url: url, :ssl => {:verify => verify_ssl_cert}) do |faraday|
        faraday.adapter Faraday.default_adapter
   end
   response = conn.get
   while response.status == 202
      # repeat code above
   end

但是您会遇到无限循环之类的风险