Передача ответа «излишек» от Twitter API - PullRequest
0 голосов
/ 26 мая 2011

Я работаю над сценарием Ruby для автоматического сбора твитов из списка пользователей или терминов, и он работает, за исключением случаев, когда в Твиттере перегружены. Затем 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 голосов
/ 27 мая 2011

Можно проверить код состояния HTTP результата, он должен быть 503.

http://twitter.com/503

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...