用Typhoeus读取可重试的FTP和HTTP URI?

在讨论了“ Ruby的’open_uri’在读取或失败后是否可靠地关闭套接字? ” 之后的一些故障处理时,我想深入研究这个问题。

我想尝试从FTP服务器提取数据,然后如果失败,尝试从http服务器拉取。 如果这两个都失败了,我想循环并尝试重试几次,尝试之间的间隔很短(可能是1秒)

我在“ 重试Ruby中的代码块(exception,无论如何) ”中读到了“可重试”方法,但是retryable-rb可能更强大。

我希望在这种情况下看到一个旧帽子的例子,因为我需要一个可靠的机制来剔除我所拥有的几个半不可靠来源的数据。 正如在另一个主题中所指出的那样, Typhoeus似乎可以为这个解决方案提供强大的组件。

使用其中一个gem可能是一个好主意,但没有它们就很简单:

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