2016-11-23 68 views
0

我正在通過youtube批量報告提取youtube分析。 https://developers.google.com/youtube/reporting/v1/reports/Youtube報告API HttpError 429 FreeQuotaGroupCLIENT_PROJECT-100

一切正常接受時,我們有很多的用戶,我們遇到 <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 '****'.">

我知道有每百秒API調用的數量限制。

有無論如何增加這個限制,因爲我看到它是FreeQuotaGroupCLIENT_PROJECT-100s,所以可能有Paid Quota或別的東西。

如果不是,處理回退的最佳方法是什麼?我們不能使用sleep方法,因爲有很多並行進程,他們不會等待另一個進程。

謝謝。

回答

1

429 status code表示用戶在給定的時間內發送了太多的請求(「限速」)。勾選此related SO post其中指出:

接收狀態429 不是錯誤,這是其他服務器的「好心」問你,請停止發送垃圾郵件的請求。顯然,你的請求率太高,服務器不願意接受。

你不應該試圖「閃避」這個,甚至試圖通過欺騙你的IP來規避服務器安全設置,你應該簡單地通過不發送太多請求來尊重服務器的答案。

如果一切設置正確,您還將收到「Retry-after」標題以及429響應。此標題指定在進行另一個呼叫之前應等待的秒數。處理這個「問題」的正確方法是閱讀這個標題,並讓你的過程睡上好幾秒鐘。

發現響應不經常改變;在本地緩存發現響應或使用exponential back-off重試。您需要減慢發送請求的速度。