2015-04-14 381 views
3

我一直在使用Google Drive API以編程方式創建和共享文檔。昨天我開始收到此錯誤信息的每個請求插入權限:Google Drive API - 權限 - 超出限制。用戶留言:對不起,您已超出您的共享配額

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden 
{ 
    "code" : 403, 
    "errors" : [ { 
    "domain" : "usageLimits", 
    "location" : "user.sharing", 
    "locationType" : "other", 
    "message" : "Rate limit exceeded. User message: \"Sorry, you have exceeded your sharing quota.\"", 
    "reason" : "userRateLimitExceeded" 
    } ], 
    "message" : "Rate limit exceeded. User message: \"Sorry, you have exceeded your sharing quota.\"" 
} 

我仍然可以編程方式創建的文檔,但插入一個允許的請求總是失敗。

這是通過服務帳戶完成的,其理念是服務帳戶將管理應用程序的這些文檔並根據需要與授權用戶共享。

插入某處大約50-100個權限後,該錯誤開始發生。我已經完成了一些研究,聽起來Google Drive API中可能存在一個「功能」,它會限制可以插入的權限數量。有沒有辦法解決這個限制?


更新:

爲了記錄在案,我可以每天創建正好51權限。創建第52個權限總是會在24小時內失敗。不幸的是,這個限制使服務帳戶的權限API完全無用。

回答

3

正如@zdegenr所述,我也體驗到,您每24小時只能創建約50個權限。我可以通過sendNotificationEmails參數禁用發送通知電子郵件來解決此問題:https://developers.google.com/drive/v2/reference/permissions/insert

有了這個配置我再也不會打配額...

+1

謝謝,這個作品!我想這個設置是必要的,以防止使用通知電子郵件作爲垃圾郵件。 – zdegenr

-1

您可能正在達到每秒配額限額。您一次只能提出如此多的請求。執行Exponential Backoff,這樣當你請求失敗時,你會在重試之前給它一點時間。它應該減少你看到的速率限制錯誤的數量。

+0

我嘗試添加權限和相同的錯誤時遇到前面加上10秒的延遲。大約一個小時前,我能夠再次添加權限(看起來是24小時鎖定),所以我嘗試以編程方式添加100個文檔和100個權限,每2秒鐘創建一個新文檔。在第50次迭代的某個地方,我又被鎖定了。 – zdegenr

1

嘗試https://www.google.com.ph/search?q=you+have+exceeded+your+sharing+quota&oq=you+have+exceeded+your+sharing+quota&aqs=chrome..69i57&sourceid=chrome&es_sm=93&ie=UTF-8結果中有幾條建議,包括請求支持的機制。這是速率限制錯誤之一,在這種情況下減速,或者它是每日配額問題,在這種情況下請求更高的配額。儘管谷歌文檔說,如果你得到一個速率限制,做做指數回退,因爲它會謀殺你的吞吐量。相反,請將您的請求限制在每3秒左右一次,然後加速或減速直到它們消失。

+0

感謝pinoyyid,Ive通過這些結果非常廣泛地看。其中一頁顯示,每次允許防止垃圾郵件的數量都有一個隱藏的每日限制(通過我猜想的通知電子郵件):[link](https://productforums.google.com/forum/?hl=en# !category-topic/docs/documents/9Rnt5BS-qmI)。如果是這種情況,那麼我不確定Google Drive可以用於以編程方式與某些用戶共享文件... – zdegenr

+0

不確定爲什麼您建議避免指數回退。總是對我很好。以每秒3個請求的速度進行修復將無法很好地擴展,並且您在等待退出時進行硬編碼。 –

+0

@ZigMandel。指數回退適用於某些類別的錯誤,但不適用於速率限制。根據定義,當客戶嘗試提交大量交易時,出現費率限制錯誤,比方說,爲了討論的目的,這個錯誤是1,000。因此,應用程序的目標是在最短時間內提交1,000筆交易,即以最高的可用吞吐量提交。你的應用程序將快速連續提交30個左右,而不會失敗。在30之後,每個連續的交易都將失敗403,直到您開始遏制爲Google允許的速度。 ... – pinoyyid

相關問題