U vi, @ s d Z ddlZddlmZmZ ddlmZ ddlmZ ddlmZ ddl m Z ddlmZm Z dd lmZ ed ZG dd de ZdS ) z7Implementation for Retry strategy during HTTP requests. N)datetime timedelta) takewhilerandom)Callable)Retry) MaxRetryError ResponseError) InfluxDBErrorz"influxdb_client.client.write.retryc sz e Zd ZdZdeegef d fd d Z fddZdddZ dd Z fddZd fdd Zdd Z dd Z ZS )WritesRetrya Writes retry configuration. The next delay is computed as random value between range `retry_interval * exponential_base^(attempts-1)` and `retry_interval * exponential_base^(attempts) Example: for retry_interval=5, exponential_base=2, max_retry_delay=125, total=5 retry delays are random distributed values within the ranges of [5-10, 10-20, 20-40, 40-80, 80-125] r } N)retry_callbackc sP t jf | || _|| _|| _|| _|| _|| _t t |d | _|| _dS )a Initialize defaults. :param int jitter_interval: random milliseconds when retrying writes :param num max_retry_delay: maximum delay when retrying write in seconds :param int max_retry_time: maximum total retry timeout in seconds, attempt after this timout throws MaxRetryError :param int total: maximum number of retries :param num retry_interval: initial first retry delay range in seconds :param int exponential_base: base for the exponential retry delay, :param Callable[[Exception], int] retry_callback: the callable ``callback`` to run after retryable error occurred. The callable must accept one argument: - `Exception`: an retryable error )secondsN) super__init__jitter_intervaltotalretry_intervalmax_retry_delaymax_retry_timeexponential_baser nowr retry_timeoutr ) selfr r r r r r r kw __class__ S/opt/alt/python38/lib/python3.8/site-packages/influxdb_client/client/write/retry.pyr s zWritesRetry.__init__c s d|kr| j |d<