2011-08-09 63 views
1

DeadlineExceededError我有一個大的文件,我上傳。整個請求可能需要超過30秒的限制,因此我將其移至任務隊列。問題是,即使在任務中,我仍然遇到此錯誤。
我假設這是因爲它是上傳文件中的單個請求,也不能避免,因爲這30秒的限制。除了使用'後端'解決方案(App引擎剛剛添加了這個我認爲的功能,但它是一種付費功能,看起來有點複雜),是否有任何方法可以繞過這個限制?不幸的是我無法分割文件。谷歌App Engine的任務隊列:在文件上傳

編輯:很抱歉的混亂。上傳,我的意思是上傳到外部服務器。該方案是我從數據存儲中提取數據並將其上傳到Google文檔電子表格。即使它位於任務隊列中,將其上傳到Google文檔的單個請求也會超過30秒並超時。

+0

使用Blobstore http://code.google.com/appengine/docs/python/blobstore/ – sje397

+0

@Shaun,我從來沒有遇到上傳時間超過30秒的問題 - 您是否說您將文件處理移至任務隊列?或者上傳本身(例如使用urlfetch)?如果您使用的是urlfetch,則可能需要查看附加到該配置的[配額和限制](http://code.google.com/appengine/docs/python/urlfetch/overview.html#Quotas_and_Limits)。 –

+0

你不能「將文件上傳到任務」,所以它有點讓你困惑。莫拉斯有你的答案;使用blobstore。 –

回答

3

有兩種類型的DeadlineExceeded您可能會得到 - 一個是由於請求超時,另一個是由於URLFetch調用超時。請求任務隊列的最後期限爲10分鐘,但URLFetch調用的默認截止時間爲5秒,所以您幾乎肯定會獲得後者。

您可以通過提供timeout參數來增加URLFetch調用的最後期限。這在交互式請求中限制爲10秒,在任務隊列請求中限制爲10分鐘。

+0

這就是它 - 在全球範圍內延長urlfetch的超時時間是解決方案。 –

0

除了請求時限外,還有一個請求大小限制32Mb。如果您超出此範圍,則必須使用其他解決方案,如Blobstore或外部存儲。