嘗試上傳文件時,Google Drive REST API有時會返回500:內部服務器錯誤。這些錯誤大部分實際上對應於成功的上傳。我們會根據Google的建議重新嘗試上傳,以便稍後查看重複內容。Google Drive SDK - 500:內部服務器錯誤:大部分時間文件成功上傳
處理這些錯誤的建議方法是什麼?
嘗試上傳文件時,Google Drive REST API有時會返回500:內部服務器錯誤。這些錯誤大部分實際上對應於成功的上傳。我們會根據Google的建議重新嘗試上傳,以便稍後查看重複內容。Google Drive SDK - 500:內部服務器錯誤:大部分時間文件成功上傳
處理這些錯誤的建議方法是什麼?
標準錯誤處理說明如下:https://developers.google.com/drive/handle-errors
然而,500錯誤不應該發生,所以請添加日誌信息,而谷歌可以看看調試這個問題你。謝謝。
Google's documentation似乎表明這是他們的內部錯誤,而不是您可以修復的特定錯誤。他們建議使用exponential backoff,這基本上是以增加的時間間隔重新嘗試該功能。
例如,該功能失敗。等待2秒鐘,然後重試。如果失敗,請等待4秒鐘。然後是8秒,16,32等。更大的差距意味着您給服務提供的時間越來越多。雖然取決於您的需要,但您可能希望最終限制時間,以便在停止前最多等待10分鐘。
retrying
包有一個非常好的設置。您可以只需from retrying import retry
,然後使用retry
作爲任何應該重新嘗試的函數的裝飾器。下面是我的一個例子:
@retry(wait_exponential_multiplier=1000, wait_exponential_max=60*1000, stop_max_delay=10*60*1000)
def find_file(name, parent=''):
...
要使用你只需要在函數聲明之前把@retry
裝飾。您可以使用retry()
,但您可以通過可選參數來調整計時工作方式。我使用wait_exponential_multiplier
來調整嘗試之間等待時間的增加。 wait_exponential_max
是可以花費等待的最長時間。 stop_max_delay
是在引發異常之前花費重試的時間。所有的值都是毫秒。
我會記錄整個迴應,當我得到一個500,並回復時,我找到一個。 – Rajiv 2013-04-11 21:42:10
爲此投了票 - 同樣的問題在這裏http://stackoverflow.com/questions/19769000/google-drive-uploading-file-size-limit – 2013-11-04 13:45:00
解決了我 - 見我以前的評論。 檢查你的MIME類型,並嘗試上傳你的文件與內容類型:application/octet-stream。 GoogleDrive有時會通過文件轉換失敗。 – 2013-11-21 00:19:05