由于"实例不可用而重试GAE延期任务"尽管已经成功了

时间:2016-01-05 16:37:56

标签: google-app-engine google-app-engine-python

在我们的GAE应用程序中,由于命名任务多次以相同名称提交,我们偶尔会在延迟任务中看到TombstonedTaskError错误。尽管第一次执行延期任务成功,但这些任务似乎偶尔会被GAE自动重新提交。

this log screenshot中可以看到一个例子:任务" refresh_stock_status-1451012400-GNeg-completion-poll-2"于12月25日上午提交,并于12月25日至25:05完成。然后,由于某种原因,该任务由GAE(" X-Appengine-Taskretrycount:1")在07:35:18自动重试,其中指定的原因为" X-Appengine-Taskretryreason :实例不可用"。很明显,一个实例(id以" ... 2976"结尾)已经可用,任务已经完成。为什么这样重试?可以采取哪些措施来预防呢?虽然很少见,但这些错误仍然具有误导性,在检查我们的应用程序时检查它们需要时间。

我在网上找到的唯一类似情况是https://groups.google.com/forum/#!topic/google-appengine/0JWCp3OGnMI。除了摆弄实例缩放配置(这可能会降低错误发生率)之外,没有提供任何解决方案,但在我们的情况下会产生太多的副作用。

1 个答案:

答案 0 :(得分:0)

在与Google支持人员联系后,我们发现其原因很少,GAE可以多次执行延期任务。这意味着必须实现任务,以便可以安全地执行多次而不会出现任何错误,这对我们来说并非如此(因为我们假设任务只执行一次)。