每次获得202 http状态作为回复时,我需要Faraday
重试 POST 请求。我知道this module,但我还没有真正了解如何使用它,因为202不会抛出错误或其他内容而 retry_if:阻止是没有要求202回应。
我在this middleware取得了一些成功,但它仅重新发送一次请求,而202次响应可能连续发生2次。
我想知道是否有人可以使用retry
模块或法拉第中间件向我展示一种方法。
答案 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
但是您会遇到无限循环之类的风险