App Engine任务队列确保在返回2xx范围之外的状态代码时重试任务,这显然包括杂散异常。这对于诸如超时之类的偶然故障是很好的,但是在永久性故障的情况下 - 当任务无法成功完成而不管它重试多少次时 - 它会导致不必要的负载。当然,在这种情况下可以返回2xx,但这不会被GAE注册为错误请求,也不会显示在管理控制台控制台的“错误”表中。
因此我问:有没有办法以这样的方式使任务失败:
答案 0 :(得分:2)
要在管理控制台的错误选项卡中显示请求,您只需在级别ERROR
或更高级别记录至少一条消息。只需记录所述消息,然后返回200状态代码,以确保您的任务不会重新排队。
如果您想要做的只是在经过一定次数的重试后停止重试,您可以configure that。
答案 1 :(得分:1)
这里有一点抓地力22。您不希望以某种特定方式重试失败的任务。但除HTTP响应代码外,GAE如何知道? “是的,我失败了,但那是O.K.”或者“是的,我失败了,我永远都会”,因为HTTP response codes可用(除了可能“501 Not Implemented”,这意味着别的东西),因此无法进行沟通。您可以获得的最接近的响应是2xx响应,某些故障情况将排除在外。
没有用于检查任务堆栈跟踪的工具,但如果有,则确定特定堆栈跟踪意味着故障条件是永久性的将是相当困难的。可能涉及博士论文。
我认为这个归结为测试和警惕。