【发布时间】:2011-06-22 10:28:17
【问题描述】:
我正在创建一个网络爬虫,当我使用没有存储空间的 Anemone 来爬取网站时,它最终由于内存问题而崩溃。
所以我安装了 Redis、redis-rb 等,并更改了我的代码以使用 redis 存储。现在我从 rails 收到一个错误,它没有完成爬网。它确实连接到 redis,因为我在监视它时可以看到活动,但它会停止爬网。
我确实测试了redis,它工作正常......
有什么想法吗???
错误
RuntimeError(-ERR 'hgetall' 命令的参数数量错误): /usr/lib/ruby/gems/1.8/gems/ezmobius-redis-rb-0.1/lib/redis.rb:274:in 阅读回复' /usr/lib/ruby/gems/1.8/gems/ezmobius-redis-rb-0.1/lib/redis.rb:198:inraw_call_command' /usr/lib/ruby/gems/1.8/gems/ezmobius-redis-rb-0.1/lib/redis.rb:196:in 地图' /usr/lib/ruby/gems/1.8/gems/ezmobius-redis-rb-0.1/lib/redis.rb:196:inraw_call_command' /usr/lib/ruby/gems/1.8/gems/ezmobius-redis-rb-0.1/lib/redis.rb:161:in call_command' /usr/lib/ruby/gems/1.8/gems/ezmobius-redis-rb-0.1/lib/redis.rb:151:inmethod_missing' anemone (0.5.0) lib/anemone/storage/redis.rb:82:in rget' anemone (0.5.0) lib/anemone/storage/redis.rb:41:ineach' 海葵 (0.5.0) lib/anemone/storage/redis.rb:40:in each' anemone (0.5.0) lib/anemone/storage/redis.rb:57:inkeys' 海葵 (0.5.0) lib/anemone/storage/redis.rb:12:in 初始化'海葵 (0.5.0) lib/anemone/storage.rb:30:innew' 海葵 (0.5.0) lib/anemone/storage.rb:30:in Redis' app/controllers/processpages_controller.rb:332:incrawlnewsite'
Redis 监控结果:
+1297028372.281985“钥匙”“海葵:页面:*”
版本/环境:
redis:尝试了版本 2 和 2.0.4 - 相同的 p 问题任何一个版本 铁轨。 2.3.8,红宝石1.8.7补丁174 操作系统:centos 5 redis - 默认端口 6379 hostgator vps / 控制面板 x
已安装的宝石
anemone 0.5.0 和依赖项(noko 等) redis 宝石 (2.1.1) redis 命名空间 (0.8.0)
代码
需要'海葵'
需要'redis'
需要“redis 命名空间”
Anemone.crawl(主页) 做 |anemone|
anemone.storage = Anemone::Storage.Redis
anemone.on_every_page 做 |page|
...大量代码
结束
config/redis.yml
默认值:&默认值 主机:本地主机端口:6379
发展:
测试:
分期:
生产:
【问题讨论】:
标签: ruby-on-rails gem web-crawler redis