2

我正在通过 youtube 批量报告提取 youtube 分析。 https://developers.google.com/youtube/reporting/v1/reports/

当我们有很多用户时,一切正常,我们遇到 <HttpError 429 when requesting https://youtubereporting.googleapis.com/v1/media/CHANNEL/****/jobs/****/reports/***?alt=media returned "Insufficient tokens for quota group and limit 'FreeQuotaGroupCLIENT_PROJECT-100s' of service 'youtubereporting.googleapis.com', using the limit by ID '****'.">

我知道每 100 秒的 API 调用次数是有限制的。

反正有没有增加这个限制,因为我看到了FreeQuotaGroupCLIENT_PROJECT-100s,所以可能有Paid Quota或者别的什么。

如果没有,处理回退的最佳方法是什么?我们不能使用sleep方法,因为有很多并行进程,他们不会等待另一个。

谢谢你。

4

1 回答 1

3

429 状态码表示用户在给定时间内发送了太多请求(“速率限制”)。检查此相关的 SO 帖子,其中指出:

收到状态 429不是错误,而是其他服务器“好心”地要求您停止发送垃圾邮件请求。显然,您的请求率太高,服务器不愿意接受。

你不应该试图“躲避”这一点,甚至试图通过欺骗你的 IP 来规避服务器安全设置,你应该通过不发送太多请求来简单地尊重服务器的答案。

如果一切设置正确,您还将收到“Retry-after”标头以及 429 响应。此标头指定在进行另一个呼叫之前您应该等待的秒数。处理这个“问题”的正确方法是阅读这个标题并让你的进程休眠几秒钟。

发现响应不经常变化;在本地缓存发现响应或使用指数退避重试。您需要降低发送请求的速度。

于 2016-11-24T15:54:28.367 回答