Google api 谷歌分析管理API 500内部服务器错误

Google api 谷歌分析管理API 500内部服务器错误,google-api,google-analytics-api,Google Api,Google Analytics Api,我有一个应用程序,可以从管理和报告API中获取几十个谷歌用户的谷歌分析元数据和统计数据 很长一段时间(几个月)一切正常,但昨天UTC晚上21:00左右,其中一位(用户)开始出现此错误:500,后端错误,有时是内部错误 His管理API请求: get all Accounts响应为200,包含360个项目 get all WebProperties响应为200,包含170个项目 获取所有配置文件响应为200,包含1000个项目 get all Goals响应为500,有错误[应该是1000项,但现

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

很长一段时间(几个月)一切正常,但昨天UTC晚上21:00左右,其中一位(用户)开始出现此错误:500,后端错误,有时是内部错误

His管理API请求:
get all Accounts响应为200,包含360个项目
get all WebProperties响应为200,包含170个项目
获取所有配置文件响应为200,包含1000个项目
get all Goals响应为500,有错误[应该是1000项,但现在有错误]

现在仍然会出现这个错误(超过24小时)

顺便说一句,这个客户端的报告API也很好(对于他的一个视图/配置文件)

我研究的内容:
我试着不是为所有人请求目标,而是为一个特定帐户>特定属性>特定配置文件请求目标,api响应是200 OK!在这种情况下

在很长一段时间内,所有配置文件的早期请求目标都工作得很好!但不是今天。

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

您应该实现并重试该请求

最重要的提示:不要在与所有设置了cron作业的人竞争的时间运行。在午夜西部成本美国也运行是当每个人的配额重置也不是一个好的时间去打服务器

更新:

团队希望建议您将问题发布在问题跟踪器上。管理API团队可以查看它。从Google开发者控制台添加您的帐户信息。我会添加有问题的个人资料。将问题链接到这里,我会将其发送给他们

如果您正在运行以下请求,我认为您应该停止,因为这并不意味着返回大量数据

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

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

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

这似乎奏效了

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

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

DalmTo,当我面对500或503时,我只重试一次,对这个用户没有帮助(对其他用户有帮助)。我将尝试更改我的代码以使重试不止一次,我将很快返回这里,并提供有关结果的消息。。。我应该提醒你,这个问题持续24小时,甚至没有一个200响应!我对每个用户的更新周期是10分钟延迟(每小时6次),请查看如何实现指数退避。然而,如果这是今天刚刚发生的事情,那么我倾向于认为这是您的用户正在连接的服务器上的中断。看起来今天有几次停电,但很难说它可以连接到哪个系统。如果添加回退没有帮助,明天仍然不起作用,我可以与团队联系,看看他们是否能检测到任何东西。DalmTo,两个月前我已经实施了指数回退。它一直都很好,现在对其他人来说也一样。这听起来像是一次中断。对单个用户来说是本地的。这不是我第一次看到这种情况。不过,我可以发送电子邮件,但我们需要一段时间才能收到他们的来信,他们是west cost USA。我已经收到了团队的回复。您应该提交,如果您的所有帐户ID出现一致的500错误,请提交。请求详细信息和请求响应。对于目标,我也得到了相同的响应。它是在UTC 12:00之前开始的。asp.net商店在这里,我们正在使用nuget版本1.16.0.582中的Google.API.Analytics.v3软件包,但看起来它真的是在Google的末端。Matt,ty!我在这里做了一个bug报告Joseph,您的示例确实可以工作,但是在这种情况下,请求太多了!我的用户现在有360个帐户,有目标。列表(“~all”、“~all”、“~all”)我提出了一个请求,而不是对每个帐户ID提出360个请求。(“~all”、“~all”、“~all”)对大帐户来说从来都不是个好主意。DalmTo,文档中没有这个想法,甚至没有一个字,但我会尝试将他的帐户分成一半,好吗。。。这看起来很不舒服,但我会试试。费尔谢70,我理解你为什么会认为提出这么多请求不是一个好主意,但谷歌似乎只是在阻止目标。现在列出(“~all”、“~all”、“~all”)。我猜是因为有些工作太大了。我继承了我正在使用的代码库,或者在需要时,我会尝试按每个属性提取目标。这对我来说是可行的,只要写循环,让你的软件工作就行了。我能确认我得到了所有的数据。
...
var accountIds = GetAccountIds(analytics); 
foreach (var a in accountIds)
{
     do
     {
         var goalsList = analytics.Management.Goals.List(a, "~all", "~all");
...