Files
mayan-edms/mayan/apps/lock_manager/decorators.py
Roberto Rosario e699e39c37 Celery: Remove use of autoretry_for and retry_backoff
These features were for Celery 4.2.1, since this version
has a regression, version 4.1.1 is used instead.
The version 4.2.1 features are removed also and implemented
in code.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2018-12-09 01:31:56 -04:00

27 lines
713 B
Python

from __future__ import absolute_import, unicode_literals
import time
import random
from .exceptions import LockError
def retry_on_lock_error(retries):
def decorator(function):
def wrapper():
retry_count = 0
while True:
try:
return function()
except LockError:
if retry_count == retries:
raise
else:
retry_count = retry_count + 1
timeout = 2 ** retry_count
timeout = random.randrange(timeout + 1)
time.sleep(timeout)
return wrapper
return decorator