2012-11-26 16 views
1

我在AppEngine上項目的cron設置:的AppEngine/Java的克龍DeadlineExceededException

<?xml version="1.0" encoding="UTF-8"?> 
<cronentries> 
    <cron> 
     <url>/cron/someurl</url> 
     <description>cron</description> 
     <schedule>every monday 8:00</schedule> 
     <timezone>Asia/Singapore</timezone> 
    </cron> 
</cronentries> 

我收到錯誤:

com.google.apphosting.api.DeadlineExceededException: This request (40811df3b6350a70) started at 2012/11/26 00:00:00.404 UTC and was still executing at 2012/11/26 00:09:59.917 UTC. 

這是一個1分鐘的極限運行的任務?我雖然克朗沒有這個限制。如何避免cron條目中的錯誤?

謝謝。

回答

4

根據documentation,由cron調用的HTTP請求最多可運行10分鐘。如果您注意到HH:MM:SS值中的異常日誌,您會發現自作業開始以來總共有10分鐘。

你可能想看看你的代碼,看看它爲什麼要花這麼久。如果您的要求使您的任務運行時間超過10分鐘,我建議您查看陷阱異常,然後插入另一個請求以運行一個請求參數,該參數告訴作業從上次停止的位置開始。

或者,你也可以看看Backends

1

另外,您可以嘗試使用任務隊列(10分鐘maximun)並在接近時間限制時重新入隊,使用存儲在數據存儲區中的任何狀態變量,或者如果您依賴於數據存儲區中的迭代,則可以將數據存儲區光標傳遞給其他重新排入隊列的任務。對我來說這很好。