2010-06-01 32 views
5

我不是Google App Engine用戶。但是,我知道您收取CPU時間和其他資源的費用。如果你碰巧創造了一個無限循環,會產生什麼後果?谷歌會終止它,還是你必須自己手動執行?Google App Engine上無限循環的後果?

我是一個業餘愛好者開發者,擔心可能最終導致成百上千的小錯誤。

回答

7

(我是一個谷歌員工,但有一點的AppEngine經驗,請不要認爲這是一個「官方」迴應。)

我猜你正在使用的Java servlet API - 如果不是, 請明確說明。

AppEngine servlet docs

請求處理具有有限的量的時間來生成並返回一個 響應於請求,典型地 大約30秒 。一旦達到截止日期 ,請求處理程序 中斷。

我不知道這是否發生在一個嚴格的循環中,這將不允許虛擬機在「正常」的Java中斷它。

+0

非常感謝,那是我之後的那種信息。 – doppelgreener 2010-06-01 07:10:11

+6

緊密循環可能會阻止拋出'軟'期限錯誤,但'硬'仍會在30秒後終止您的處理程序。此外,停止在我的草皮上肌肉,喬恩。 ;) – 2010-06-01 07:25:30

+1

另外,如果您使用java或python版本,則無關緊要。兩者都會在30秒後關閉你。 – 2010-06-02 13:20:34

3

雖然Jon處理了無限循環的低級別情況,但也可能出現以下情況:您的某個處理程序被重複調用的次數過多 - 可能是您意外配置了每秒鐘備份整個數據存儲區的內容一天一次。從理論上講,即使在30秒的時間段內,你也可以使用大量的資源。但是,您仍然不會承擔鉅額費用的危險。您可以選擇設定每天想要「花費」的限額。如果您還沒有剩餘配額,您的應用將返回一個錯誤,而不是將您置於債務人的監獄。

+0

設置配額!?哦,哇,這真是太棒了!互聯網和+1給你! 我最擔心的是無限循環,因爲它們相當普遍,並不是過多的呼叫,儘管我不能說我實際上考慮過那種資源佔用。我會留意的。 謝謝彼得。 – doppelgreener 2010-06-02 04:27:18

+0

也,如果你只是修補/測試,你可以留在免費的配額。在這種情況下,你甚至不會給他們任何付款信息,所以你可以在晚上睡覺,不用擔心無限循環。 – 2010-06-02 12:52:19

1

谷歌AppEngine上強加終止前的請求可能需要多久的限制,

有強加在終止前的請求必須持續多長時間採取roughly 30 second limit。但是,在該過程結束之前不久,將會拋出一個DeadlineExceededError異常。

此外還有per-minute quotas,以防止應用程序在短時間內消耗太多配額。在正常情況下,您的應用程序不太可能超過每分鐘配額,但如果需要,可以增加此配額can be requested