XMLをいくつかのWebサービスに投稿する小さなアプリケーションを開発しています。 これは、Net :: HTTP :: Post :: Postを使用して行われます。ただし、サービスプロバイダは再接続を使用することを推奨します。Rubyネットを使った再接続戦略の実装
ような何か: 第一の要求が失敗した - > 第二の要求が失敗した2秒後にもう一度やり直してください - > 第三の要求が失敗した5秒後に再試行してください - > 10秒 後にもう一度お試しください...
何だろうそれを行うには良いアプローチですか?ループ内で次のコードを実行し、例外をキャッチして一定時間後にもう一度実行するだけですか?あるいはそれを行うための他の賢い方法がありますか? Netパッケージには、私が気付いていない機能が組み込まれているのでしょうか?
url = URI.parse("http://some.host")
request = Net::HTTP::Post.new(url.path)
request.body = xml
request.content_type = "text/xml"
#run this line in a loop??
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
ご協力いただきありがとうございます。
マット
エクセレントそれで から変換コードです。ありがとう! – Matt
Avdi、これをテストするには良い方法はありますか? (rspecまたはanyを使用) – Mike
ありがとうございました。 Btwでは、残念ながら 'SomeException'は' StandardError'である必要があります。cf:http://stackoverflow.com/questions/5370697/what-s-the-best-way-to-handle-exceptions-from-nethttp。それは非過渡的な、実際のエラーであれば、偉大ではありませんが、少なくともそれはラインにスコープされ、飲み込まれません。 – chesterbr