如何自动重试GAE后端上执行的任务?

时间:2014-01-09 16:04:21

标签: java google-app-engine

目前,我正在使用cron在Java后端上运行任务。

<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>

通常它工作正常,但有时执行任务的实例会在没有任何进一步通知的情况下死亡,因此我需要在失败后自动重试。

2 个答案:

答案 0 :(得分:1)

您需要在您的任务代码的开头添加代码,以便安排下一次启动任务(备份任务),其偏移量为几秒(或几分钟,具体取决于执行任务的时间长度) - 用于执行故障。在任务代码的末尾添加代码以删除此备份任务。

如果任务即将死亡,则再次执行。或者,如果任务即将成功完成,则备份任务将被删除。

答案 1 :(得分:0)

如果您需要在GAE上重试,则应使用任务队列。任务队列可以触发任务,只有在触发的任务返回成功的HTTP响应(如200)时才会完成。否则它将重试该任务。此外,您可以配置多个队列处理参数。它可以用于触发后端和前端的处理。

有关详细信息,请参阅https://developers.google.com/appengine/docs/python/taskqueue/