作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Mechanize gem 来抓取网站。我在 Rails rake 任务中编写了一个非常简单的单线程爬虫,因为我需要访问 Rails 模型。
爬虫运行得很好,但在观察它运行一段时间后,我可以看到它随着时间的推移消耗越来越多的 RAM,这很糟糕。
我使用 God gem 来监控我的爬虫。
下面是我的 rake 任务代码,我想知道它是否有任何内存泄漏的可能性?
task :abc => :environment do
prefix_url = 'http://example.com/abc-'
postfix_url = '.html'
from_page_id = (AppConfig.last_crawled_id || 1) + 1
to_page_id = 100000
agent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'
(from_page_id..to_page_id).each do |i|
url = "#{prefix_url}#{i}#{postfix_url}"
puts "#{Time.now} - Crawl #{url}"
page = agent.get(url)
page.search('#content > ul').each do |s|
var = s.css('li')[0].text()
value = s.css('li')[1].text()
MyModel.create :var => var, :value => value
end
AppConfig.last_crawled_id = i
end
# Finish crawling, let's stop
`god stop crawl_abc`
end
最佳答案
除非您拥有最新版本的 mechanize(2.1.1 仅在一天前发布)默认情况下 mechanize 以无限的历史记录大小运行,即它保留您访问过的所有页面,因此将逐渐使用越来越多的页面内存。
在您的情况下,这没有任何意义,因此请调用 max_history=
在您的代理上应该限制以这种方式使用的内存量
关于ruby-on-rails - Rails rake 任务在运行时不断消耗更多 RAM(使用 Mechanize 抓取网站),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143295/
安装并修复我的 VS2015 实例后,我仍然无法让智能感知(服务器端)在我的 MVC View 中工作。当我在 session 中第一次打开 .cshtml 文件并找到 Activitylog 文件时
我是一名优秀的程序员,十分优秀!