从Twitter API处理“过度容量”响应

时间:2011-05-26 16:39:55

标签: ruby twitter

我正在研究一个Ruby脚本,以便从用户或术语列表中自动收集推文,除非Twitter容量过大,否则它会起作用。然后,Twitter返回一个没有错误代码的HTML页面供我捕获。 HTML抛出解析器,脚本失败。如何检查HTML响应并正常处理?我尝试使用“直到成功”的方法(在下面的代码中注释掉),但每次最终都在拯救。

我正在使用logger,twitter和twitter4r宝石,并通过OAuth进行身份验证。除非Twitter容量过大,否则下面的代码有效。如果没有返回RestErrors,我只会到达此部分。

这是我的代码:

  #        until success
  #          begin
              if search_type == "users"
  #              begin
                  tweets_array = client.timeline_for(:user, :id => row.chomp, :since_id => since_status_id, :count => 200) 
                  success = true
                # rescue
                #   log.info("error getting tweets. waiting to try again.")
                #   sleep 180
                # end
              elsif search_type == "terms"
  #              begin
                  tweets_array = client.search(:q => row.chomp, :since_id => since_status_id, :count => 200)
                  success = true
                # rescue
                #   log.info("error getting tweets. waiting to try again.")
                #   sleep 180
                # end
              elsif
                log.fatal("unsupported search type. exiting.")
                break
              end # search type
  #          end 

我正在尝试基于答案的代码:

        begin
          tweets_array = client.timeline_for(:user, :id => row.chomp, :since_id => since_status_id, :count => 200) 
          success = true
        rescue Twitter::RESTError => re
          log.info(row.chomp + ": " + re.code.to_s + " " + re.message.to_s + " " + re.uri.to_s)
          if re.code = 503
            sleep 180
          end
        end

1 个答案:

答案 0 :(得分:0)

您可以检查结果的HTTP status code,它应该是503。

http://twitter.com/503