![]() Server : Apache/2.4.52 (Ubuntu) System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64 User : www-data ( 33) PHP Version : 8.1.2-1ubuntu2.21 Disable Function : NONE Directory : /lib/python3/dist-packages/landscape/lib/__pycache__/ |
o ���c� � @ s d dl Z G dd� d�ZdS )� Nc @ s: e Zd ZdZdd� Zdd� Zdd� Zdd � Zddd�Zd S )�ExponentialBackoffz^ Keeps track of a backoff delay that staggers down and staggers up exponentially. c C s d| _ || _|| _d S )Nr )�_error_count�_start_delay� _max_delay)�self�start_delay� max_delay� r �7/usr/lib/python3/dist-packages/landscape/lib/backoff.py�__init__ s zExponentialBackoff.__init__c C s | j d8 _ t| j d�| _ dS )z0Decreases error count with zero being the lowest� r N)r �max�r r r r �decrease s zExponentialBackoff.decreasec C s$ | � � | jk r| jd7 _dS dS )z=Increases error count but not higher than gives the max delayr N)� get_delayr r r r r r �increase s �zExponentialBackoff.increasec C s0 | j rd| j d | j }nd}tt|�| j�S )aR Calculates the delay using formula that gives this chart. In this specific example start is 5 seconds and max is 60 seconds Count Delay 0 0 1 5 2 10 3 20 4 40 5 60 (max) � r r )r r �min�intr )r �delayr r r r s zExponentialBackoff.get_delay� �?c C s0 | � � }|d| }|| t�� }t|| �S )z� Adds randomness to the specified stagger of the delay. For example for a delay of 12 and 25% stagger, it works out to 9 + rand(0,3) r )r �randomr )r �stagger_fractionr �non_random_part�random_partr r r �get_random_delay- s z#ExponentialBackoff.get_random_delayN)r ) �__name__� __module__�__qualname__�__doc__r r r r r r r r r r s r )r r r r r r �<module> s