我使用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 ---
,而不是其他任何内容。
答案 0 :(得分:1)
它可能与随机发生的网络问题有关。
如果您使用超时,则可以在长时间运行的任务中跳过此类情况。
require 'timeout'
begin
Timeout.timeout(5) do
easy.perform
end
rescue Timeout::Error
puts 'timeout'
end