1

我有一个使用烧瓶的简单代码:

@app.route('/foo/<arg>')
@app.cache.memoize()
def foo_response(arg):
    return 'Hello ' + arg

当我的 redis 服务器(缓存服务器)启动时,这很好用。

如果redis服务器宕机了,每次查询都会抛出异常/foo/<arg>,这是可以理解的。

我如何(以及在​​哪里)处理该异常(à la try-except)以便在此时关闭时不使用redis服务器?

4

1 回答 1

1

它实际上是这样实现的。通过检查memoize()你看到的 Flask-Cache 包的来源

        try:
            cache_key = decorated_function.make_cache_key(f, *args, **kwargs)
            rv = self.cache.get(cache_key)
        except Exception:
            if current_app.debug:
                raise
            logger.exception("Exception possibly due to cache backend.")
            return f(*args, **kwargs)

这意味着如果您在生产中,即app.debug=False您将看到异常日志并且该函数将被正常调用。

于 2018-05-07T21:18:36.240 回答