celery retry装饰器
使用场景
- 保存任务结果到db
- 从db获取任务
celery 装饰器学习
retry
- max_retries: 默认重试3次
- 执行成功返回.
- 执行失败,重试max_retries.
def retry(fun):
@wraps(fun)
def _inner(*args, **kwargs):
max_retries = kwargs.pop('max_retries', 3)
for retries in range(max_retries):
try:
return fun(*args, **kwargs)
except (DatabaseError, InvalidRequestError, StaleDataError):
logger.warning(
'Failed operation %s. Retrying %s more times.',
fun.__name__, max_retries - retries - 1,
exc_info=True)
if retries + 1 >= max_retries:
raise
return _inner
来源:oschina
链接:https://my.oschina.net/tplinuxhyh/blog/4530475