Google Analytics Management API 500 內部伺服器錯誤



我有一个应用程序,可以从管理和报告API获取几十个谷歌用户的Google Analytics元数据和统计数据。

很长一段时间(几个月)一切都很好,但是昨天在UTC时间晚上21:00左右,其中一个(用户)开始收到此错误:500,后端错误或有时内部错误

他的管理 API 请求:
获取所有帐户响应是 200 与 360 项目获取所有 WebProperties 响应是 200 与 170 项目获取所有配置文件响应是 200 包含 1000 个项目 获取所有目标响应为 500 但有错误 [应该是 1000 个项目


,但现在出错]

现在仍然收到此错误(超过 24 小时)。

顺便说一下,这个客户端的报告API也可以正常工作(对于他的一个视图/配置文件)

我研究的内容:
我尝试请求的目标不是针对所有人,而是针对特定属性>特定配置文件>特定帐户,并且 api 响应是 200 OK! 在这种情况下!
所有配置文件的早期请求目标在很长一段时间内都运行良好!但不是今天。

500 和 503 错误基本上是服务器加载错误。处理您的请求的服务器需要很长时间来处理您的请求,因此超时。 您需要记住,您不是唯一访问服务器的人。它很可能是另一个开发人员正在运行的东西,减慢了您的请求并导致错误。

您应该实现指数退避,然后重试请求。

重要提示:不要在与设置了 cron 作业的每个人竞争的那一刻运行。同样在午夜西部成本美国运行是每个人的配额重置也不是打击服务器的好时机。

更新:

该团队建议您在此处的问题跟踪器上发布问题。 管理 API 团队可以查看它。 从 Google 开发者控制台添加您的帐号信息。 我会添加有问题的配置文件。 将问题链接回此处,我会将其发送给他们。

如果您正在运行以下请求,我认为您应该停止这实际上不是为了返回大量数字。

analytics.Management.Goals.List("~all", "~all", "~all");

因此,凭直觉,我找到了一个似乎有效的解决方案。 这将失败(非常简化):

var goalsList = analytics.Management.Goals.List("~all", "~all", "~all");
var goalsResult = goalsList.Execute();

这一切,所有,都让我想起了我在我们的平台上遇到的一些问题。所以我试着限制我的目标要求。第一个是 accountId,所以我得到了我们所有的帐户,然后循环访问它们,为每个帐户拉出一组目标。

这似乎有效。

...
var accountIds = GetAccountIds(analytics); 
foreach (var a in accountIds)
{
do
{
var goalsList = analytics.Management.Goals.List(a, "~all", "~all");
...

谷歌团队在他们这边解决了这个问题!谢谢!

最新更新