我正在App Engine上使用Python構建應用程序。我的應用程序收到圖像作爲電子郵件附件。當電子郵件進入時,我抓住圖像,並需要將其發送到第三方API。App Engine超時錯誤:使用存儲在App Engine上的圖像提供第三方API
我做的第一件事是:
1)做一個POST請求第三方API與圖像數據
我停止這種方法,因爲我曾與urllib2的和MultipartPostHandler一些非常糟糕的編碼問題。
我現在在做的第二件事是
1)將圖像中的傳入電子郵件中數據存儲
2)把它放在內存緩存
3)發送到API的服務於圖像(使用內存緩存或者,如果在內存緩存中沒有找到,數據存儲)URL
我在我的日誌讀取的問題是:DeadlineExceededError:的ApplicationError:5
更確切地說,我看到我的日誌兩個要求:
- 第一,收到的電子郵件
- 然後,第三方API HTTP調用我的圖像上的網址我給他
傳入電子郵件結束了DeadlineExceededError。 第三方API調用到我的應用程序結束了很好,正確地提供圖像。
我的解釋:
它看起來像App Engine的等待從第三方API的響應,然後關閉,因爲超時,然後提供由第三方API的圖像提出的要求。不幸的是,當連接關閉時,一旦它接收到我的圖像,我就無法獲得第三方API提供的有用信息。
我的問題:
1)應用程序引擎可以處理來自主機的請求時,它假設得到的迴應?
2)如果沒有,我怎麼能繞過這個問題?
我只使用生產環境(因爲沒有辦法處理本地環境中的電子郵件附件)。此外,由於第三方API需要認證,我使用URLfetch的urllib或urllib2包裝。因此,我不知道如何訪問低級別URLfetch來限制其最後期限。也許你是對的,我應該回到修復昨天使用的POST請求......或者我會看看這些cron作業。無論如何感謝您的回答! – Damien 2011-06-16 15:44:04
我並不積極,但我認爲電子郵件處理程序也應該被歸類爲URLFetch超時目的的「脫機請求」,因此排隊任務隊列任務可能不是必需的。 – 2011-06-17 03:49:07
關於直接使用urlfetch擴展urlfetch截止日期,您可以這樣做:http://blog.notdot.net/2009/11/API-call-hooks-for-fun-and-profit(請參閱該帖子的末尾) – 2011-06-17 03:49:57