简体   繁体   中英

Retry POST request on 202 response - Faraday gem

I need Faraday to retry my POST request every time when it gets 202 http status as a response. I am aware of this module , yet I don't really get how to make use of it, since 202 doesn't throw an error or something and retry_if: block is not called for 202 response.

I had some success with this middleware but it resends request only once, while 202 response may occur 2 and more times in a row.

I wonder if someone could show me a way to do it using retry module or Faraday middleware.

in theory 202 is a success https://httpstatuses.com/202 , it's an acceptance of an asynchronous request, so you really should only have to send your post once, and if you get a 202, you're done your job. That link states "There is no facility in HTTP for re-sending a status code from an asynchronous operation." So, I think you'd really need to be checking for completion another way. However, you could do something like this (just spitballing here):

   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

But you run various risks like infinitely looping

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM