Я использую механизированный гем для сканирования сайтов.Я написал очень простой однопоточный сканер в задаче Rails, потому что мне нужно было получить доступ к моделям Rails.
Этот сканер работает нормально, но, посмотрев некоторое время, я вижу, что он естсо временем все больше и больше ОЗУ, что нехорошо.
Я использую драгоценный камень Бога для мониторинга моего сканера.
Ниже приведен мой код задачи рейка.подтекает?
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