我有一个使用烧瓶的简单代码:
@app.route('/foo/<arg>')
@app.cache.memoize()
def foo_response(arg):
return 'Hello ' + arg
当我的 redis 服务器(缓存服务器)启动时,这很好用。
如果redis服务器宕机了,每次查询都会抛出异常/foo/<arg>
,这是可以理解的。
我如何(以及在哪里)处理该异常(à la try-except)以便在此时关闭时不使用redis服务器?
我有一个使用烧瓶的简单代码:
@app.route('/foo/<arg>')
@app.cache.memoize()
def foo_response(arg):
return 'Hello ' + arg
当我的 redis 服务器(缓存服务器)启动时,这很好用。
如果redis服务器宕机了,每次查询都会抛出异常/foo/<arg>
,这是可以理解的。
我如何(以及在哪里)处理该异常(à la try-except)以便在此时关闭时不使用redis服务器?
它实际上是这样实现的。通过检查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
您将看到异常日志并且该函数将被正常调用。