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