我得到了一个LoadError -“太多打开的文件”当使用Feedzirra。我使用默认的WEBrick服务器在我的开发服务器上运行它。
我只解析了2个提要。有什么问题吗?
发布于 2014-01-12 06:58:11
我和Feedzirra也有同样的问题。您可以注意到,它使TCP连接永远处于CLOSE_WAIT状态,因此导致了问题。
它似乎是特定于curb gem的,用于获取提要。另一个依赖于libcurl had the same issue的项目。他们已经通过设置'CURLOPT_FORBID_REUSE'选项修复了这个问题。
我也尝试过为Feedzirra做同样的事情,但没有成功。即使有了这个选项,我最终还是遇到了越来越多的CLOSE_WAIT会话和Too many open files错误。
所以我做了最简单的事情,我使用Net::HTTP下载提要
def get_contents(furl)
url = URI.parse(furl)
req = Net::HTTP::Get.new(url.to_s)
res = Net::HTTP.start(url.host, url.port) { |http|
http.request(req)
}
unless res.kind_of? Net::HTTPSuccess
puts "can't get feed #{url.to_s}: #{res.code}"
return nil
end
res.body
end然后我用Feedzirra解析XML:
xml = get_contents(furl)
feedin = Feedzirra::Feed.parse xml不再有卡住的连接,也不再有错误。您可能还希望在此示例代码中添加更好的错误处理功能。
https://stackoverflow.com/questions/18374770
复制相似问题