OXIESEC PANEL
- Current Dir:
/
/
opt
/
alt
/
python311
/
lib
/
python3.11
/
site-packages
/
redis
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
09/05/2025 09:34:01 AM
rwxr-xr-x
📄
__init__.py
1.71 KB
05/08/2024 06:42:54 PM
rw-r--r--
📁
__pycache__
-
05/08/2024 06:42:55 PM
rwxr-xr-x
📄
backoff.py
2.61 KB
05/08/2024 06:42:54 PM
rw-r--r--
📄
client.py
71.8 KB
05/08/2024 06:42:54 PM
rw-r--r--
📄
cluster.py
75.87 KB
05/08/2024 06:42:54 PM
rw-r--r--
📁
commands
-
05/08/2024 06:42:54 PM
rwxr-xr-x
📄
connection.py
59.14 KB
05/08/2024 06:42:54 PM
rw-r--r--
📄
crc.py
670 bytes
05/08/2024 06:42:54 PM
rw-r--r--
📄
exceptions.py
4.54 KB
05/08/2024 06:42:54 PM
rw-r--r--
📄
lock.py
10.76 KB
05/08/2024 06:42:54 PM
rw-r--r--
📄
ocsp.py
11.18 KB
05/08/2024 06:42:54 PM
rw-r--r--
📄
retry.py
1.7 KB
05/08/2024 06:42:54 PM
rw-r--r--
📄
sentinel.py
12.4 KB
05/08/2024 06:42:54 PM
rw-r--r--
📄
utils.py
1.51 KB
05/08/2024 06:42:54 PM
rw-r--r--
Editing: backoff.py
Close
import random from abc import ABC, abstractmethod class AbstractBackoff(ABC): """Backoff interface""" def reset(self): """ Reset internal state before an operation. `reset` is called once at the beginning of every call to `Retry.call_with_retry` """ pass @abstractmethod def compute(self, failures): """Compute backoff in seconds upon failure""" pass class ConstantBackoff(AbstractBackoff): """Constant backoff upon failure""" def __init__(self, backoff): """`backoff`: backoff time in seconds""" self._backoff = backoff def compute(self, failures): return self._backoff class NoBackoff(ConstantBackoff): """No backoff upon failure""" def __init__(self): super().__init__(0) class ExponentialBackoff(AbstractBackoff): """Exponential backoff upon failure""" def __init__(self, cap, base): """ `cap`: maximum backoff time in seconds `base`: base backoff time in seconds """ self._cap = cap self._base = base def compute(self, failures): return min(self._cap, self._base * 2 ** failures) class FullJitterBackoff(AbstractBackoff): """Full jitter backoff upon failure""" def __init__(self, cap, base): """ `cap`: maximum backoff time in seconds `base`: base backoff time in seconds """ self._cap = cap self._base = base def compute(self, failures): return random.uniform(0, min(self._cap, self._base * 2 ** failures)) class EqualJitterBackoff(AbstractBackoff): """Equal jitter backoff upon failure""" def __init__(self, cap, base): """ `cap`: maximum backoff time in seconds `base`: base backoff time in seconds """ self._cap = cap self._base = base def compute(self, failures): temp = min(self._cap, self._base * 2 ** failures) / 2 return temp + random.uniform(0, temp) class DecorrelatedJitterBackoff(AbstractBackoff): """Decorrelated jitter backoff upon failure""" def __init__(self, cap, base): """ `cap`: maximum backoff time in seconds `base`: base backoff time in seconds """ self._cap = cap self._base = base self._previous_backoff = 0 def reset(self): self._previous_backoff = 0 def compute(self, failures): max_backoff = max(self._base, self._previous_backoff * 3) temp = random.uniform(self._base, max_backoff) self._previous_backoff = min(self._cap, temp) return self._previous_backoff