【问题标题】:HTTP::Parser::Error with Rails and Twitter Streaming APIHTTP::Parser::Rails 和 Twitter 流 API 出错
【发布时间】:2011-08-24 10:37:47
【问题描述】:

我目前正在构建一个应用程序 (Rails 3.1rc6),该应用程序涉及从 Twitter 流 API 过滤数据,但在接收流后遇到问题。

我尝试过同时使用 Twitter-Stream gem 和 tweetstream gem,但都遇到了同样的问题,这并不奇怪,因为 tweetstream 依赖于 Twitter-Stream。

我可以很好地获取流,并在我计划作为守护进程运行的 tracker.rb 文件中使用以下代码打印相关信息:

require 'rubygems'
require 'twitter/json_stream'
require 'json'

EventMachine::run {
  stream = Twitter::JSONStream.connect(
    :path    => '/1/statuses/filter.json?track=rails',
    :auth    => 'user:password'
  )

  stream.each_item do |item|
    @result = JSON.parse(item)
    puts @result["text"]

  end

 #Handle Errors...

我打算过滤某些单词并将它们存储在数据库中,但是一旦我尝试使用 ActiveRecord 做任何事情,我就会收到以下错误

Tom-Liveseys-MacBook-Air:twitter_stream Tom$ ruby ./lib/daemons/tracker.rb
String
/Library/Ruby/Gems/1.8/gems/twitter-stream-0.1.14/lib/twitter/json_stream.rb:121:in `<<': Could not parse data entirely            (HTTP::Parser::Error)
from /Library/Ruby/Gems/1.8/gems/twitter-stream-0.1.14/lib/twitter/json_stream.rb:121:in `receive_data'
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine'
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run'
from ./lib/daemons/tracker.rb:5

有人知道为什么我不能对数据做任何有用的事情吗?我检查了 JSON 是否正确解析,@result["text"] 返回正确的字符串。

谢谢,

汤姆

【问题讨论】:

    标签: ruby-on-rails-3 activerecord twitter


    【解决方案1】:

    好的,我知道我收到错误的原因了。我试图将推文id 作为整数获取,并将其插入它不喜欢的 pg 数据库(在 heroku 上)。

    也许错误来自试图用大整数读取该属性。无论如何,我将列类型更改为字符串并改为获取tweet["id_str"] 属性。现在效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 2012-08-19
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      相关资源
      最近更新 更多