【发布时间】:2014-01-12 21:59:15
【问题描述】:
我正在运行一个应用程序,它使用 mechanize 每隔一段时间从 RSS 提要中获取一些数据。
它作为 heroku 工作者运行,大约一天后我收到以下错误: Errno::EMFILE: 打开的文件太多 - socket(2)
我无法在 mechanize 中找到“关闭”方法,我需要做些什么才能关闭浏览器会话吗?
以下是我创建浏览器 + 读取信息的方法:
def mechanize_browser
@mechanize_browser ||= begin
agent = Mechanize.new
agent.redirect_ok = true
agent.request_headers = {
'Accept-Encoding' => "gzip,deflate,sdch",
'Accept-Language' => "en-US,en;q=0.8",
}
agent
end
end
并实际获取信息:
response = mechanize_browser.get(url)
响应后关闭:
def close_mechanize_browser
@mechanize_browser = nil
end
提前致谢!
【问题讨论】:
-
到目前为止有什么运气吗?我在下面提供的解决方案与您现有的代码有点不同——从抽象函数到内置函数——但应该准确地完成你想要做的事情。
标签: ruby-on-rails ruby heroku mechanize