我正在创建各种类型的网络抓取工具,当我使用没有存储空间的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 read_reply” /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” 海葵(0.5.0)lib / anemone / storage / redis.rb:82:在rget'海葵中 (0.5.0)lib / anemone / storage / redis.rb:41:ineach'anemone(0.5.0) lib / anemone / storage / redis.rb:40:每个'海葵(0.5.0) lib / anemone / storage / redis.rb:57:inkeys'anemone(0.5.0) lib / anemone / storage / redis.rb:12:初始化'海葵(0.5.0) lib / anemone / storage.rb:30:innew' anemone(0.5.0) lib / anemone / storage.rb:30:在Redis中 应用程序/控制器/ processpages_controller.rb:332:incrawlnewsite'
+1297028372.281985“keys”“anemone:pages:*”
redis:尝试过版本2和2.0.4 - 同样的p roblem任一版本 轨道。 2.3.8,ruby 1.8.7patch 174 os:centos 5 redis - 默认端口6379 hostgator vps / control panel x
海葵0.5.0和依赖(noko等...) redis gem(2.1.1) redis-name-space(0.8.0)
要求'海葵'
要求'redis'
要求'redis-namespace'
Anemone.crawl(主页)做|海葵|
anemone.storage = Anemone :: Storage.Redis
anemone.on_every_page do | page |
......大量的代码
端
默认值:&默认值 host:localhost port:6379
发展: <&lt ;: *默认
试验: <&lt ;: *默认
分期: <&lt ;: *默认
生产: <&lt ;: *默认
答案 0 :(得分:0)
你的问题是
RuntimeError (-ERR wrong number of arguments for 'hgetall' command):
在代码的某处,您正在尝试调用'hgetall',但是没有传递密钥,或者您传递了太多参数。只需检查您的代码,找到您调用该命令的位置,并传递正确的#参数(1)