def reconnect_db(logfunc, default=None, retry_seconds=None):
'''
Catch Operational errors from the database and try to reconnect.
'''
def _decorator(func):
def _wrapper(*args, **kwargs):
while True:
try:
return func(*args, **kwargs)
except OperationalError as e:
logfunc(e)
close_old_connections()
if retry_seconds is None:
return default
else:
time.sleep(retry_seconds)
_wrapper.__doc__ = func.__doc__
return _wrapper
return _decorator
评论列表
文章目录