【问题标题】:Retry POST request on 202 response - Faraday gem在 202 响应上重试 POST 请求 - Faraday gem
【发布时间】:2018-05-30 11:18:44
【问题描述】:

我需要Faraday 在每次收到 202 http 状态作为响应时重试我的 POST 请求。我知道this module,但我真的不知道如何使用它,因为 202 不会抛出错误或其他东西,并且不会为 202 响应调用 retry_if: 块。

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

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

【问题讨论】:

    标签: ruby-on-rails ruby http faraday


    【解决方案1】:

    理论上 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
    

    但是你会冒各种风险,比如无限循环

    【讨论】:

      猜你喜欢
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      • 2017-09-25
      • 2021-01-21
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多