首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails使用Feedzirra打开的文件太多

rails使用Feedzirra打开的文件太多
EN

Stack Overflow用户
提问于 2013-08-22 16:01:00
回答 1查看 160关注 0票数 1

我得到了一个LoadError -“太多打开的文件”当使用Feedzirra。我使用默认的WEBrick服务器在我的开发服务器上运行它。

我只解析了2个提要。有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 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下载提要

代码语言:javascript
复制
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:

代码语言:javascript
复制
xml = get_contents(furl)
feedin = Feedzirra::Feed.parse xml

不再有卡住的连接,也不再有错误。您可能还希望在此示例代码中添加更好的错误处理功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18374770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档