Python 通过ndb减少日志混乱。添加带有延迟任务的\u流\u异常

Python 通过ndb减少日志混乱。添加带有延迟任务的\u流\u异常,python,google-app-engine,app-engine-ndb,Python,Google App Engine,App Engine Ndb,我正在寻找减少错误日志混乱的方法 “浪费异常日志记录”最令人沮丧的用例之一是taskqueue任务失败时 当然,对于该特定示例,一个好的解决方案是self.error(500),而不是引发异常——但此解决方案不适用于延迟.defer 我知道的重新触发延迟任务的唯一方法是向webapp处理程序引发异常 文档化的解决方案如下所示: class CompletedExpectedException(Exception): """This Exception is completely expe

我正在寻找减少错误日志混乱的方法

“浪费异常日志记录”最令人沮丧的用例之一是taskqueue任务失败时

当然,对于该特定示例,一个好的解决方案是
self.error(500)
,而不是
引发异常
——但此解决方案不适用于
延迟.defer

我知道的重新触发延迟任务的唯一方法是向webapp处理程序引发
异常

文档化的解决方案如下所示:

class CompletedExpectedException(Exception):
    """This Exception is completely expected. 
    We don't need to see it as "errors" in the logs, or GAE dashboard graphs."""
    pass

# The following code, when on the 'global' app level, does not have an effect.
ndb.add_flow_exception(CompletedExpectedException)

# The following code does not work, either
class WarmupHandler(webapp2.RequestHandler):
    """/_ah/warmup or /_ah/start"""
    def get(self):
        ndb.add_flow_exception(CompletedExpectedException)

    def post(self):
        self.get()

除了将我的解决方案移动到
任务队列
而不是
延迟。延迟
-存在什么解决方案?

添加流\u异常只是NDB的事情,它没有连接到任何更高级别,所以除非是
小任务
中的代码引发异常,否则我认为它无法帮助您

通过延迟函数,您可以引发
deferred.taskfailure
,以避免日志记录