From c2f55f073e1fe7fa380c8df94238440540b3afd8 Mon Sep 17 00:00:00 2001 From: lash Date: Mon, 2 May 2022 20:12:15 +0000 Subject: [PATCH] Add missing lock file --- chaind/lock.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 chaind/lock.py diff --git a/chaind/lock.py b/chaind/lock.py new file mode 100644 index 0000000..008004f --- /dev/null +++ b/chaind/lock.py @@ -0,0 +1,34 @@ +# standard imports +import time + +# local imports +from .error import BackendError + +BASE_DELAY = 0.01 +BASE_DELAY_LIMIT = 3.0 + + +class StoreLock: + + def __init__(self, delay=BASE_DELAY, delay_limit=BASE_DELAY_LIMIT, error=BackendError, description=None): + self.base_delay = delay + self.delay = delay + self.delay_limit = delay_limit + self.error = error + self.description = description + + + def again(self, e=None): + if self.delay > self.delay_limit: + err = None + if e != None: + err = str(e) + else: + err = self.description + raise self.error(err) + time.sleep(self.delay) + self.delay *= 2 + + + def reset(self): + self.delay = self.base_delay