遏制没有回应

时间:2014-09-02 07:33:20

标签: ruby rss curb feedjira

我使用Feedjira解析RSS流。 当我使用fetch_and_parse方法时,它有时会被屏蔽并且没有响应。

手动路缘下载也会发生同样的事情。

我写了一个循环:

@my_logger.info "--- Before perform ---"
easy = Curl::Easy.new
easy.follow_location = true
easy.max_redirects = 3 
easy.connect_timeout = 120
easy.url = url
easy.useragent = "Ruby/Curb"
easy.perform
@my_logger.info "--- After perform ---"
doc = easy.body_str
easy.close

一段时间后(可能是一天或一小时),流程在easy.perform行停止,并且没有响应。例如。处理输出--- Before perform ---,而不是其他任何内容。

1 个答案:

答案 0 :(得分:1)

它可能与随机发生的网络问题有关。

如果您使用超时,则可以在长时间运行的任务中跳过此类情况。

require 'timeout'
begin
  Timeout.timeout(5) do      
    easy.perform
  end
rescue Timeout::Error
  puts 'timeout'
end