File: //lib/python3.9/site-packages/redis/__pycache__/retry.cpython-39.pyc
a
��b � @ s6 d dl Z d dlmZ d dlmZmZ G dd� d�ZdS )� N)�sleep)�ConnectionError�TimeoutErrorc @ s: e Zd ZdZeeejffdd�Ze d�dd�Z
dd� Zd S )
�Retryz0Retry a specific number of times after a failurec C s || _ || _|| _dS )a'
Initialize a `Retry` object with a `Backoff` object
that retries a maximum of `retries` times.
`retries` can be negative to retry forever.
You can specify the types of supported errors which trigger
a retry with the `supported_errors` parameter.
N)�_backoff�_retries�_supported_errors)�self�backoffZretriesZsupported_errors� r �//usr/lib/python3.9/site-packages/redis/retry.py�__init__
s
zRetry.__init__)�specified_errorsc C s t t| jt |� ��| _dS )zM
Updates the supported errors with the specified error types
N)�tuple�setr )r r r r r �update_supported_errors s �zRetry.update_supported_errorsc
C s� | j �� d}z|� W S | jy� } zP|d7 }||� | jdkrP|| jkrP|�| j �|�}|dkrlt|� W Y d}~qd}~0 0 qdS )a&
Execute an operation that might fail and returns its result, or
raise the exception that was thrown depending on the `Backoff` object.
`do`: the operation to call. Expects no argument.
`fail`: the failure handler, expects the last error that was thrown
r � N)r �resetr r Zcomputer )r ZdoZfailZfailures�errorr
r r r �call_with_retry# s
zRetry.call_with_retryN)�__name__�
__module__�__qualname__�__doc__r r �socket�timeoutr
�listr r r r r r r s
�
r )r �timer Zredis.exceptionsr r r r r r r �<module> s