Google 分析管理 API Java 包批处理未按预期工作

Google Analytics Management API Java Package Batching not working as indended

我正在尝试将相同的 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 编译为一次点击并一次发送它们以减少服务器上的负载。

这个系统似乎更像是一个排队系统,它有它的位置,但不能帮助我减少我正在使用的写入次数。因为我正在为 1000 个左右的网站编写 10 个目标,所以我每天要查看 10k 的写入。限制每个项目每天 500 次写入,这使得这成为 20 天的事情。如果我每个配置文件只有一个写,那将是 2 天的事情。我向 Google 团队请求增加我的 API 配额并添加对另外 5 个项目的目标更新测试版访问权限,以便我可以开始切换密钥,但与此同时,我想了解是否有是我可以做的事情来让批处理作为一个单一的写入工作。

使用批处理获得的性能提升仅针对权限调用 (user management docs)。

我相信你说的是正确的,就像你一次一个地拨打电话一样。当您一次发送 10 个呼叫时,您可能会收到配额错误。我猜是 1.5qps per Account ID write limit

如果您需要进行那么多次写入,您可能需要 implement exponential backoff.

希望对您有所帮助,祝您好运:)