【发布时间】:2020-06-25 07:47:55
【问题描述】:
我目前正在管理两个 Google Analytics(分析)管理帐户,其中有许多客户,每个帐户都有 view_id。任务是通过 Google Analytics Reporting API (v4) 请求客户端数据,并通过 Airflow DAG 结构每天将它们存储到 SQL 后端。
对于第一个帐户,一切正常。 就在最近,我将第二个帐户添加到数据请求例程中。 问题是,即使两个帐户都设置为相同的“USER-100s”配额限制,新添加的帐户仍会出现此错误:
googleapiclient.errors.HttpError: <HttpError 429 when requesting https://analyticsreporting.googleapis.com/v4/reports:batchGet?alt=json returned "Quota exceeded for quota group 'AnalyticsDefaultGroup' and limit 'USER-100s' of service 'analyticsreporting.googleapis.com' for consumer 'project_number:XXXXXXXXXXXX'.">
我已按照 Google 官方指南 (https://developers.google.com/analytics/devguides/config/mgmt/v3/limits-quotas) 中的建议将配额限制“User-100s”从 100 设置为最大值 1000
我还检查了 Google API 控制台和我的项目编号的请求数,但到目前为止我从未超过每 100 秒 1000 个请求(请参阅请求历史帐户 2),而第一个帐户始终有效(请参阅请求历史帐户 1)。仍然出现上述错误。
我也可以排除第二个帐户的客户只是拥有更多数据的可能性。
我现在进入一个 try-except 循环,它会一直请求直到最终成功查询数据,例如
success = False
data = None
while not success:
try:
data = query_data() # trying to receive data from the API
if data:
success = True
except HttpError as e:
print(e)
这一点都不优雅,也不利于维护(如集成测试)。此外,它非常耗费时间和资源,因为循环有时可能会无限期地运行。这只能是短期的解决方法。
这尤其令人沮丧,因为相同的实现适用于第一个帐户,它发出更多请求,但对第二个帐户失败。
如果您知道任何解决方案,我会很高兴知道。
托比干杯
【问题讨论】: