%PDF- %PDF-
Direktori : /usr/lib/python3/dist-packages/landscape/lib/__pycache__/ |
Current File : //usr/lib/python3/dist-packages/landscape/lib/__pycache__/backoff.cpython-312.pyc |
� �~�e� � � � d dl Z G d� d� Zy)� Nc �0 � e Zd ZdZd� Zd� Zd� Zd� Zdd�Zy) �ExponentialBackoffz^ Keeps track of a backoff delay that staggers down and staggers up exponentially. c �. � d| _ || _ || _ y )Nr )�_error_count�_start_delay� _max_delay)�self�start_delay� max_delays �7/usr/lib/python3/dist-packages/landscape/lib/backoff.py�__init__zExponentialBackoff.__init__ s � ����'���#��� c �d � | xj dz c_ t | j d� | _ y)z0Decreases error count with zero being the lowest� r N)r �max�r s r �decreasezExponentialBackoff.decrease s( � ����Q����� 1� 1�1�5��r c �j � | j � | j k r| xj dz c_ yy)z=Increases error count but not higher than gives the max delayr N)� get_delayr r r s r �increasezExponentialBackoff.increase s+ � ��>�>��d�o�o�-�����"�� .r c � � | j r d| j dz z | j z }nd}t t |� | 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 �delays r r zExponentialBackoff.get_delay sG � � ����4�,�,�q�0�1�T�5F�5F�F�E��E��3�u�:�t���/�/r c � � | j � }|d|z z }||z t j � z }t ||z � 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_parts r �get_random_delayz#ExponentialBackoff.get_random_delay- sF � � ��� ���1�'7�#7�8���.�.�����@���?�[�0�1�1r N)g �?) �__name__� __module__�__qualname__�__doc__r r r r r! � r r r r s � �� $�6� #� 0�$2r r )r r r&