flask 缓存 - 当 redis 服务关闭时处理异常

flask caching - handle exception when redis service is down

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

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

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

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

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

其实是这样实现的。通过检查 Flask-Cache 包中 memoize() 的来源,您会看到

        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 您将看到异常日志并且该函数将被正常调用。