Повторите POST-запрос на 202 ответа - камень Фарадея - PullRequest
0 голосов
/ 30 мая 2018

Мне нужно Faraday, чтобы повторить мой POST запрос каждый раз, когда он получает HTTP-статус 202 в качестве ответа.Мне известно о этом модуле , но я не совсем понимаю, как его использовать, поскольку 202 не выдает ошибку или что-то в этом роде, а retry_if: блок не вызываетсяза 202 ответ.

У меня был некоторый успех с этим промежуточным ПО , но он отправляет запрос только один раз, в то время как ответ 202 может появляться 2 и более раз подряд.

Интересно, мог ли кто-топокажи мне, как это сделать, используя модуль retry или промежуточное ПО Фарадея.

1 Ответ

0 голосов
/ 31 января 2019

в теории 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

Но вы подвергаетесь различным рискам, как бесконечный цикл

...