gpt4 book ai didi

ruby-on-rails - Rails rake 任务在运行时不断消耗更多 RAM(使用 Mechanize 抓取网站)

转载 作者:行者123 更新时间:2023-12-04 16:20:54 24 4
gpt4 key购买 nike

我使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com