2012-01-02 2 views
0

"Does Ruby's 'open_uri' reliably close sockets after read or on fail?"の中でいくつかの障害処理について説明したので、少し深く掘り下げたいと思っていました。Typhoeusによる再試行可能なFTPとHTTP URIの読み取り?

私はFTPサーバーからデータを取得しようとします。失敗した場合は、httpサーバーからプルしようとします。これらは両方とも失敗した場合、私が試み(おそらく1秒)

間に短い休止で数回周りにサイクルしたいとリトライを試みるだろうしかし私は、「Retrying code blocks in Ruby (on exceptions, whatever)」の「再試行可能な」方法について読んretryable-rbより堅牢である可能性がある。

このシナリオでは、私が持っている半信頼性のあるいくつかのソースからデータを間引きするための信頼できるメカニズムが必要なので、古いシナリオの例を見ていただきたいと思います。他のスレッドで指摘されているように、Typhoeusはこのソリューションに堅牢なコンポーネントを提供する可能性があります。これらの宝石のいずれかを使用して

答えて

1

は良い考えかもしれないが、それは彼らなしではかなり簡単です:

data = nil 
until data 
# or 5.times do 
    data = open(ftp_url){|f| f.read} rescue nil 
    data ||= open(http_url){|f| f.read} rescue nil 
    break if data 
    sleep 1 
end 
+0

はとてもうまくいきました。あなたの提案を忘れてしまったuriビルダーに論理バグを見た。 – ylluminate

関連する問題