2014-01-09 54 views
0

目前我正在使用cron在Java後端運行任務。如何自動重試在GAE後端執行的任務?

<cron> 
    <url>/admin/stats?action=dailyStats</url> 
    <description>Send daily statistics</description> 
    <schedule>every day 16:50</schedule> 
    <target>backends1</target> 
    <timezone>Europe/Madrid</timezone> 
</cron> 

的後端配置有2個動態實例:

<backends> 
    <backend name="backends1"> 
    <class>B2</class> 
<instances>2</instances> 
    <options> 
     <dynamic>true</dynamic> 
    </options> 
    </backend> 
</backends> 

通常它工作得很好,但有些時候執行任務的情況下只死亡,沒有任何進一步的通知,所以我需要它來重審自動失敗後。

回答

1

您需要在您的任務代碼開始處添加代碼,用於計劃下次啓動任務(備份任務),偏移量爲幾秒(或分鐘,取決於任務執行的時間長度) - 執行故障。在任務代碼的末尾添加代碼以刪除此備份任務。

如果任務將會死亡,然後再次執行。或者如果任務將成功完成,則備份任務將被刪除。

+0

我想這可以工作,但我有很多的任務,所以我要尋找不需要我額外的代碼添加到每個任務的解決方案。 – fmatheis

+0

編寫一個可以完成它的函數/類(將打包代碼),並將任務代碼作爲參數放入函數或類中 - 您更喜歡什麼。 – jacek2v

+0

您還可以簡化代碼並使用「嘗試除外」塊。然後創建備份任務代碼,您可以將其放入「except」語句中。 – jacek2v

0

如果您需要在GAE上重試,您應該使用任務隊列。任務隊列可以觸發一個任務,並且只有當被觸發的任務返回成功的HTTP響應時纔會完成任務,如200.否則它將重試任務。另外,您可以配置多個隊列處理參數。它可以用來觸發後端和前端的處理。

欲瞭解更多詳情,請參閱https://developers.google.com/appengine/docs/python/taskqueue/