Запрос Garb к Google Analytics не удается выполнить с домашнего провайдера, но работает в другом месте - PullRequest
1 голос
/ 07 октября 2010

Я пытаюсь использовать гем garb для доступа к данным из Google Analytics API и обнаруживаю, что http-запросы, использующие garb, прекрасно работают из учетной записи Linode, но отклоняются из дома (Comcast). Google отклоняет некоторые виды http-запросов от определенных интернет-провайдеров, или я просто делаю что-то не так? Простой пример ниже:

require 'garb'

Garb::Session.login('XXXXXX@gmail.com', 'XXXXXX')
@profile = Garb::Profile.all.first
@report = Garb::Report.new(@profile)
@report.metrics :visits
puts @report.results

Это дает => [#<OpenStruct visits="21">] на моем Линоде, но то же самое, что и мой домашний провайдер, дает:

Garb::DataRequest::ClientError: "<errorsxmlns=.........

Который поднят здесь в одежде:

def send_request
  response = if @session.single_user?
    single_user_request
  elsif @session.oauth_user?
    oauth_user_request
  end

  raise ClientError, response.body.inspect unless response.kind_of?(Net::HTTPSuccess)
  response
end

Первоначальный сеанс входа в систему работает отлично с обоих IP-адресов. Ошибка генерируется только при запросе результатов. Что я могу сделать, чтобы это исправить? Я (пока) не проверил, что я получаю точно такое же поведение, когда выполняю запросы clientlogin / data вручную. Я совершенно уверен, что это не проблема самоцветов, а проблема, связанная с IP - возможно, это связано с политикой квот для веб-сервисов Google - но я готов принять все возможные решения.

Спасибо, Orion

Ответы [ 2 ]

2 голосов
/ 07 октября 2010

Возможно, вы за короткий промежуток времени сделали слишком много звонков в Google.Я не видел, чтобы это случилось с Garb, но я видел, как это происходило при использовании API для очистки страниц результатов поиска.Google замечает и помечает ваш IP.Попробуйте перейти на google.com и запустить обычный поиск Google с заблокированного IP-адреса, возможно, вам потребуется ввести код с картинки.Вероятно, на данном этапе они блокируют вызовы API с этого IP-адреса, и я думаю, что через несколько дней вы очиститесь.

0 голосов
/ 07 января 2013

Джереми, вероятно, прав.

В Google Analytics API есть несколько квот, о которых вам нужно беспокоиться.Смотрите здесь их список здесь .Я достиг 10 запросов в секунду на квоту IP-адреса и / или 10 одновременных запросов в профиле.Я также видел где-то 4 одновременных запроса на IP-адрес.

Вам следует опубликовать полное сообщение об ошибке, которое Гарб даст вам в следующий раз, так как они фактически помогли мне выяснить, что вызвало его в прошлом.* Кроме того, эти квоты предназначены для проектов, отправляющих зарегистрированные ключи API вместе со своими запросами.Если нет, то квоты намного ниже.Я попал в квоту для незарегистрированного проекта раньше.Регистрация вашего проекта довольно проста, и вы просто добавляете следующую строку

Garb::Session.api_key = 'API_KEY'

в свой код (я использую вилку Сии) перед строкой Garb::Session.login.

Еще одна вещькак только вы зарегистрируете свой проект, перейдите на страницу Quotas на консоли API и нажмите «Установить ограничения для каждого пользователя» и увеличьте значение по умолчанию с 1,0 до 10,0 запросов в секунду / пользователя.Если вы нажмете «Запросить больше», они дадут несколько советов по оптимизации ваших звонков / времени, чтобы не превысить лимит.

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