Как построить запрос Google Analytics, чтобы избежать ограничения квоты? - PullRequest
2 голосов
/ 30 января 2020

Это одна часть моего запроса. И у меня есть 725 таких запросов на каждый день в течение 2 лет.

Я получаю аналитику за 30 дней трафика c для определенного набора данных, который я создаю.

Когда я пытаюсь запросить аналитику для всех 725 наборов данных, я получаю ошибку квоты Requests per user per 100 seconds, хотя Я ставлю time.pause(2) перед каждым запросом.

Есть ли что-то еще, что я могу сделать, чтобы избежать превышения квоты API?

{
   "reportRequests":[
      {
         "viewId":"104649158",
         "dateRanges":[
            {
               "startDate":"2017-12-01",
               "endDate":"2017-12-31"
            }
         ],
         "metrics":[
            {
               "expression":"ga:pageviews"
            },
            {
               "expression":"ga:uniquePageviews"
            },
            {
               "expression":"ga:pageviewsPerSession"
            },
            {
               "expression":"ga:timeOnPage"
            },
            {
               "expression":"ga:avgTimeOnPage"
            },
            {
               "expression":"ga:entrances"
            },
            {
               "expression":"ga:entranceRate"
            },
            {
               "expression":"ga:exitRate"
            },
            {
               "expression":"ga:exits"
            }
         ],
         "dimensions":[
            {
               "name":"ga:pagePathLevel2"
            }
         ],
         "dimensionFilterClauses":[
            {
               "filters":[
                  {
                     "dimensionName":"ga:pagePathLevel2",
                     "operator":"REGEXP",
                     "expressions":[
                        "23708|23707|23706|23705|23704|23703|23702|23701|23700|23699|23698|23697|23696|23695|23694|23693|23692"
                     ]
                  }
               ]
            }
         ]
      }
   ]
}

Ответы [ 2 ]

1 голос
/ 30 января 2020

1) Вы должны увеличить квоту пользователя до 1000 запросов (если это еще не сделано) , перейдя в свою консоль Coogle Cloud -> Меню в верхнем левом углу -> API и службы -> API отчетов Google Analytics - > Квота:

https://console.cloud.google.com/apis/api/analyticsreporting.googleapis.com/quotas

enter image description here

enter image description here

2) Вы можете увеличить временной диапазон и использовать измерение ga:yearMonth, чтобы по-прежнему получать месячную разбивку. Однако вы можете столкнуться с проблемами выборки. : так как ваш запрос «пользовательский» (вы используете фильтр + измерение), будет применяться выборка, если для данного временного диапазона общее количество сеансов на уровне свойства превышает 500K (независимо от того, сколько фактически включено в ответ). В этом случае нет абсолютного ответа, вы должны найти временные диапазоны, которые вам больше подходят samplesReadCounts / samplingSpaceSizes поможет вам обнаружить выборку, и при необходимости вам потребуется обработать нумерацию страниц .

0 голосов
/ 30 января 2020

Хотя это правильно, вы можете запросить увеличение квоты. Это увеличит общее количество запросов, которые вы можете сделать, но это все еще ограничено.

В консоли API существует аналогичная квота, называемая запросами на 100 секунд на пользователя. По умолчанию он установлен на 100 запросов на 100 секунд на пользователя и может быть настроен на максимальное значение 1000. Но количество запросов к API ограничено максимум 10 запросами в секунду на пользователя.

больше информации

запросов на пользователя в 100 секунд

Является ли пользовательская квота связанной с максимумом 10 запросов в секунду на пользовательскую квоту (10 запросов в секунду (QPS) на IP-адрес). Это в основном защита от наводнений. Он препятствует тому, чтобы один пользователь делал много запросов к API, и поэтому затрудняет остальное использование API.

Сначала вам нужно понять, что 100 запросов на пользователя в секунду очень субъективно. Когда вы выполняете запрос, у вас нет возможности узнать, на каком сервере будет выполняться ваш запрос, если ваш сервер работает только на этом сервере, тогда возможно, что вы могли бы запустить 100 запросов за 10 секунд, а затем заблокировать их на следующие 90 секунд.

quotaUser

Второе, что вам нужно знать, это то, что основанный на пользователях обычно означает основанный на ip, так что если этот запрос может идти против разных представлений, но если все они выполняются с одного и того же IP-адреса, это может вызвать некоторую путаницу, и это предполагает, что вы один и тот же пользователь. Чтобы обойти это, вы можете использовать альтернативный параметр, называемый Quota User, который вы можете отправлять случайную строку этому при каждом запросе, и это может помочь ему не уменьшить его, Google имеет тенденцию поймать то, что вы в конечном итоге делаете.

quotaUser Произвольная строка, однозначно идентифицирующая пользователя.
Позволяет вводить квоты для каждого пользователя из приложения на стороне сервера даже в тех случаях, когда IP-адрес пользователя неизвестен. Это может произойти, например, с приложениями, которые запускают задания cron в App Engine от имени пользователя. Вы можете выбрать любую произвольную строку, которая однозначно идентифицирует пользователя, но ограничена 40 символами. Узнайте больше о использовании ограниченного API.

Реализация экспоненциального отката

Google обычно рекомендует реализовать нечто, называемое экспоненциальным откатом, это в основном означает, что вы пытаетесь выполнить запрос, если он терпит неудачу, затем вы ждете несколько секунд и повторяете попытку, если это не удается, тогда вы ждете в два раза дольше, чем ждали раньше, а затем пытаетесь снова, вы делаете это примерно 10 раз, и обычно вы можете получить, хотя.

Если Вы используете одну из официальных клиентских библиотек Google, в большинстве из них уже реализован экспоненциальный откат

flod buster

I, в то время как go я написал статью о том, что я назвал флуд-бустером, его способ отслеживания того, как быстро я собирался попытаться предотвратить ошибку квоты пользователя, код которой указан в C#, может оказаться полезным флудер

на самом деле не проблема

, хотя получение этих ошибок может быть уродливым, на самом деле не имеет значения, вам нужно просто сделать запрос еще раз. Google не считает эту ошибку против вас, если вы не делаете это постоянно в течение нескольких часов.

2000 запросов на проект 100 с

Вы должны помнить, что количество запросов, которые может выполнить ваш проект Всего за 100 секунд составляет 2000. Это не может быть увеличено.

Таким образом, если у вас есть два пользователя, каждый из которых потребляет 1000 запросов в 100 секунд, вы попадете в квоту, основанную на проекте, и с этим ничего не поделаешь. Разрешить одному пользователю съесть всю вашу квоту - это не очень хорошая идея, если только это не однопользовательское приложение.

...