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

时间:2012-01-02 23:24:20

标签: ruby-on-rails ruby ruby-on-rails-3 screen-scraping

在" Does Ruby's 'open_uri' reliably close sockets after read or on fail?"中讨论了一些失败处理后,我想深入研究这个问题。

我想尝试从FTP服务器提取数据,如果失败,请尝试从http服务器提取数据。如果这两个都失败了,我想循环并试图在尝试之间短暂停顿几次(可能是1秒)重试几次

我读到了关于"可重试" " Retrying code blocks in Ruby (on exceptions, whatever)"中的方法,但retryable-rb可能更健壮。

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

1 个答案:

答案 0 :(得分: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