2014-10-03 82 views
0

我正在使用GAE push Task Queue。我希望任務運行一次,如果失敗,我希望它以某種方式通知我。我也不希望它做任何重試。如果失敗,我希望它在隊列中坐直到我手動重新運行。如何獲取Google App Engine任務隊列失敗的通知

我可以手動捕獲所有異常併發送電子郵件給我自己它失敗。有沒有更好的辦法? 在隊列配置中,我可以指定零的重試限制(見下文),但如果我這樣做,任務一旦失敗就會被刪除。

# queue.yaml 
- name: default 
    rate: 5/s 
    retry_parameters: 
    task_retry_limit: 0 

任何想法?

回答

3

我能想到的唯一方法就是爲min_backoff_seconds設置一個很高的值。如果您可以將其設置爲7天這樣的高度,那麼您應該有足夠的時間來回復您的電子郵件。

我不知道是否有限制您可以爲min_backoff_seconds設置的值有多高,因此您需要檢查該值。

我認爲捕捉異常並向自己發送電子郵件是通知自己任務失敗的唯一方法。

0

除了抓住所有例外之外,我不認爲有任何方法可以做你想要的。當任務隊列失敗時,GAE不會發送消息,但不幸的是,沒有服務「允許」獲得該功能。

除非你得到谷歌的工程師來回答一些有關服務,我不知道....

5

當任務重,你可以閱讀下次重試的重試次數。並做你需要做的。

Look here for:X-AppEngine-TaskRetryCount,這個任務被重試的次數;對於第一次嘗試,此值爲0.此數字包括由於缺少可用實例而導致任務失敗並且從未到達執行階段的嘗試。

0

@ voscausa的回答意味着:您可以實現一個taskCheckerTask,它總是返回http代碼,除了200-299之外的任何數字。但是不要忘記,如果失敗,任務將從隊列中刪除。

class TaskChecker(webapp2.RequestHandler): 
    def post(self): 
     # Check tasks and retries here 
     # If need send mail 
     self.echo(500)