File: //lib/python3.9/site-packages/redis/__pycache__/backoff.cpython-39.pyc
a
��bo
� @ s� d dl Z d dlmZmZ G dd� de�ZG dd� de�ZG dd� de�ZG d d
� d
e�ZG dd� de�ZG d
d� de�Z G dd� de�Z
dS )� N)�ABC�abstractmethodc @ s$ e Zd ZdZdd� Zedd� �ZdS )�AbstractBackoffzBackoff interfacec C s dS )z�
Reset internal state before an operation.
`reset` is called once at the beginning of
every call to `Retry.call_with_retry`
N� ��selfr r �1/usr/lib/python3.9/site-packages/redis/backoff.py�reset s zAbstractBackoff.resetc C s dS )z'Compute backoff in seconds upon failureNr �r �failuresr r r �compute s zAbstractBackoff.computeN)�__name__�
__module__�__qualname__�__doc__r r r r r r r r s r c @ s e Zd ZdZdd� Zdd� ZdS )�ConstantBackoffzConstant backoff upon failurec C s
|| _ dS )z"`backoff`: backoff time in secondsN�Z_backoff)r Zbackoffr r r �__init__ s zConstantBackoff.__init__c C s | j S )Nr r
r r r r s zConstantBackoff.computeN�r
r r r r r r r r r r s r c s e Zd ZdZ� fdd�Z� ZS )� NoBackoffzNo backoff upon failurec s t � �d� d S �Nr )�superr r �� __class__r r r $ s zNoBackoff.__init__)r
r r r r �
__classcell__r r r r r ! s r c @ s e Zd ZdZdd� Zdd� ZdS )�ExponentialBackoffz Exponential backoff upon failurec C s || _ || _dS ��e
`cap`: maximum backoff time in seconds
`base`: base backoff time in seconds
N��_cap�_base�r Zcap�baser r r r + s zExponentialBackoff.__init__c C s t | j| jd| �S )N� )�minr r r
r r r r 3 s zExponentialBackoff.computeNr r r r r r ( s r c @ s e Zd ZdZdd� Zdd� ZdS )�FullJitterBackoffz Full jitter backoff upon failurec C s || _ || _dS r r r! r r r r : s zFullJitterBackoff.__init__c C s t �dt| j| jd| ��S )Nr r# )�random�uniformr$ r r r
r r r r B s zFullJitterBackoff.computeNr r r r r r% 7 s r% c @ s e Zd ZdZdd� Zdd� ZdS )�EqualJitterBackoffz!Equal jitter backoff upon failurec C s || _ || _dS r r r! r r r r I s zEqualJitterBackoff.__init__c C s* t | j| jd| �d }|t�d|� S )Nr# r )r$ r r r&