目前,我正在使用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>
通常它工作正常,但有时执行任务的实例会在没有任何进一步通知的情况下死亡,因此我需要在失败后自动重试。
答案 0 :(得分:1)
您需要在您的任务代码的开头添加代码,以便安排下一次启动任务(备份任务),其偏移量为几秒(或几分钟,具体取决于执行任务的时间长度) - 用于执行故障。在任务代码的末尾添加代码以删除此备份任务。
如果任务即将死亡,则再次执行。或者,如果任务即将成功完成,则备份任务将被删除。
答案 1 :(得分:0)
如果您需要在GAE上重试,则应使用任务队列。任务队列可以触发任务,只有在触发的任务返回成功的HTTP响应(如200)时才会完成。否则它将重试该任务。此外,您可以配置多个队列处理参数。它可以用于触发后端和前端的处理。
有关详细信息,请参阅https://developers.google.com/appengine/docs/python/taskqueue/