Nano Hash - криптовалюты, майнинг, программирование

Пакетная обработка пакетов Java API управления Google Analytics не работает должным образом

Я пытаюсь развернуть те же 10 целей на большом количестве веб-сайтов. У меня есть цели, хранящиеся в toAddArray, и в цикле они будут создаваться или обновляться в зависимости от количества целей текущего сайта. Сначала я создаю пакет, затем в цикле добавляю цели в пакет (я пропустил код цели, потому что запись не завершается ошибкой), а затем выполняю пакет.

Код, который я запускаю

        //Create batch from Analytics Object
        BatchRequest b = analytics.batch();
        // in loop determine create or update based off current Goal list size
        FOR LOOP IS HERE
        if(y < currentSize)
            {
                //some code for inserting the goal 
                analytics.management().goals().update(ACTIVE_ACCOUNT_ID, ACTIVE_PROPERTY_ID, ACTIVE_PROFILE_ID, String.valueOf(y+1), toAddArray[y]).queue(b, setCallback("Successfully Added Goal"));
            }
            else{
                // Some code for when I update the goal 
                // Send to queue
                analytics.management().goals().insert(ACTIVE_ACCOUNT_ID, ACTIVE_PROPERTY_ID, ACTIVE_PROFILE_ID, toAddArray[y]).queue(b, setCallback("Successfully Added Goal"));
            }

           FOR LOOP ENDS
           //Execute the batch 
           b.execute();

Что происходит

Когда я запускаю это, я получаю обратные вызовы для 10 целей, первые 5-6 возвращаются успешно, а последние 4 возвращаются с превышением предела скорости. Насколько мне известно, весь смысл пакетной системы состоит в том, чтобы скомпилировать URL-адреса в один хит и отправить их все сразу, чтобы снизить нагрузку на сервер.

Эта система, кажется, работает больше как система очередей, которая имеет свое место, но не помогает мне уменьшить количество операций записи, с которыми я работаю. Поскольку я пишу 10 целей на 1000 или около того веб-сайтов, я смотрю на 10 тысяч записей в день. С ограничением в 500 записей на проект в день, это 20-дневная работа. Если бы у меня была запись только для каждого профиля, это заняло бы 2 дня. У меня есть запросы к команде Google, чтобы увеличить мои квоты API и добавить доступ к бета-версии Goal для еще 5 проектов, чтобы я мог начать переключать ключи, но в то же время я хочу понять, могу ли я что-то сделать, чтобы получить пакетную обработку работать как одна единственная запись.


Ответы:


1

Прирост производительности за счет пакетной обработки возможен только для разрешений (пользователя документы управления).

Я считаю, что вы правы, когда говорите, что звонки делаются так, как если бы вы делали их по одному. Вы, вероятно, получаете ошибки квоты, когда отправляете 10 вызовов одновременно. Я предполагаю, что это 1,5 запроса в секунду на запись идентификатора учетной записи лимит

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

Я надеюсь, что это поможет, и удачи :)

14.10.2017
  • Спасибо за ответ Джош. В прошлом я сам собирал хиты с помощью своей собственной очереди, а затем просто периодически переводил процесс в спящий режим, чтобы не нарушать ограничения API. Здесь находится ссылка на страницу с рекомендациями, где подробно как это можно использовать для многих операций и предназначено для уменьшения количества обращений к API. Просто кажется, что этот класс Java на самом деле не использует очередь для генерации HTTP-запросов и их объединения. Я собираюсь сделать это сам и вытащить запрос. 17.10.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..