Поделиться через


AsyncRetryPolicy Класс

Асинхронный вариант политики повторных попыток.

Политику асинхронного повтора в конвейере можно настроить напрямую или настроить для каждого вызова.

Наследование
azure.core.pipeline.policies._retry.RetryPolicyBase
AsyncRetryPolicy
azure.core.pipeline.policies._base_async.AsyncHTTPPolicy
AsyncRetryPolicy

Конструктор

AsyncRetryPolicy(**kwargs: Any)

Параметры Keyword-Only

Имя Описание
retry_total
int

Общее количество разрешенных повторных попыток. Имеет приоритет над другими счетчиками. Значение по умолчанию — 10.

retry_connect
int

Количество ошибок, связанных с подключением, для выполнения повторных попыток. Это ошибки, возникающие перед отправкой запроса на удаленный сервер, который, как предполагается, не активировал сервер для обработки запроса. Значение по умолчанию — 3.

retry_read
int

Количество повторных попыток при чтении ошибок. Эти ошибки возникают после отправки запроса на сервер, поэтому запрос может иметь побочные эффекты. Значение по умолчанию — 3.

retry_status
int

Количество повторных попыток при неправильном коде состояния. Значение по умолчанию — 3.

retry_backoff_factor

Коэффициент задержки, применяемый между попытками после второй попытки (большинство ошибок устраняются немедленно второй попыткой без задержки). Политика повторных попыток будет переходить в спящий режим в течение: {коэффициент задержки} * (2 ** ({общее число повторных попыток} — 1)) секунд. Если backoff_factor равно 0,1, то повторная попытка будет в спящем режиме [0,0s, 0,2s, 0,4s, ...] между повторными попытками. Значение по умолчанию — 0,8.

retry_backoff_max
int

Максимальное время отката. Значение по умолчанию — 120 секунд (2 минуты).

Примеры

Настройка политики асинхронных повторных попыток.


   from azure.core.pipeline.policies import AsyncRetryPolicy

   retry_policy = AsyncRetryPolicy()

   # Total number of retries to allow. Takes precedence over other counts.
   # Default value is 10.
   retry_policy.total_retries = 5

   # How many connection-related errors to retry on.
   # These are errors raised before the request is sent to the remote server,
   # which we assume has not triggered the server to process the request. Default value is 3
   retry_policy.connect_retries = 2

   # How many times to retry on read errors.
   # These errors are raised after the request was sent to the server, so the
   # request may have side-effects. Default value is 3.
   retry_policy.read_retries = 4

   # How many times to retry on bad status codes. Default value is 3.
   retry_policy.status_retries = 3

   # A backoff factor to apply between attempts after the second try
   # (most errors are resolved immediately by a second try without a delay).
   # Retry policy will sleep for:
   #    {backoff factor} * (2 ** ({number of total retries} - 1))
   # seconds. If the backoff_factor is 0.1, then the retry will sleep
   # for [0.0s, 0.2s, 0.4s, ...] between retries.
   # The default value is 0.8.
   retry_policy.backoff_factor = 0.5

   # The maximum back off time. Default value is 120 seconds (2 minutes).
   retry_policy.backoff_max = 120

   # Alternatively you can disable redirects entirely
   retry_policy = AsyncRetryPolicy.no_retries()

   # All of these settings can also be configured per operation.
   policies.append(retry_policy)
   async with AsyncPipelineClient[HttpRequest, AsyncHttpResponse](base_url=url, policies=policies) as client:
       response = await client._pipeline.run(
           request,
           retry_total=10,
           retry_connect=1,
           retry_read=1,
           retry_status=5,
           retry_backoff_factor=0.5,
           retry_backoff_max=60,
           retry_on_methods=["GET"],
       )

Методы

configure_retries

Настраивает параметры повтора.

get_backoff_time

Возвращает текущее время задержки.

get_retry_after

Возвращает значение Retry-After в секундах.

increment

Увеличение счетчиков повторных попыток.

is_exhausted

Проверяет, не осталось ли повторных попыток.

is_retry

Проверяет, допускается ли повторная попытка кода метода или состояния.

На основе списков разрешений и переменных управления, таких как общее количество повторных попыток, необходимо ли учитывать заголовок Retry-After, присутствует ли этот заголовок и находится ли возвращенный код состояния в списке кодов состояния, которые необходимо повторить при наличии указанного выше заголовка.

Поведение:

  •   If status_code < 400: don't retry
    
  •   Else if Retry-After present: retry
    
  •   Else: retry based on the safe status code list ([408, 429, 500, 502, 503, 504])
    
no_retries

Отключите повторные попытки.

parse_retry_after

Вспомогательный метод для анализа Retry-After и получения значения в секундах.

send

Использует настроенную политику повтора для отправки запроса следующей политике в конвейере.

sleep

Спящий режим между повторными попытками.

Этот метод учитывает заголовок ответа сервера Retry-After и спящий режим в течение запрошенного времени. Если этого нет, будет использоваться экспоненциальная задержка. По умолчанию коэффициент отката равен 0, и этот метод возвращает немедленно.

update_context

Обновления журнал повторных попыток в контексте конвейера.

configure_retries

Настраивает параметры повтора.

configure_retries(options: Dict[str, Any]) -> Dict[str, Any]

Параметры

Имя Описание
options
Обязательно

ключевое слово аргументы из контекста.

Возвращаемое значение

Тип Описание

Дикт, содержащий параметры и журнал для повторных попыток.

get_backoff_time

Возвращает текущее время задержки.

get_backoff_time(settings: Dict[str, Any]) -> float

Параметры

Имя Описание
settings
Обязательно

Параметры повтора.

Возвращаемое значение

Тип Описание

Текущее значение задержки.

get_retry_after

Возвращает значение Retry-After в секундах.

get_retry_after(response: PipelineResponse[Any, AllHttpResponseType]) -> float | None

Параметры

Имя Описание
response
Обязательно

Объект PipelineResponse

Возвращаемое значение

Тип Описание

Значение Retry-After в секундах.

increment

Увеличение счетчиков повторных попыток.

increment(settings: Dict[str, Any], response: PipelineRequest[HTTPRequestType] | PipelineResponse[HTTPRequestType, AllHttpResponseType] | None = None, error: Exception | None = None) -> bool

Параметры

Имя Описание
settings
Обязательно

Параметры повтора.

response

Объект ответа конвейера.

значение по умолчанию: None
error

Ошибка, обнаруженная во время запроса, или Нет, если ответ был успешно получен.

значение по умолчанию: None

Возвращаемое значение

Тип Описание

Доступна ли какая-либо попытка повтора. Значение True, если доступно больше повторных попыток, в противном случае — false.

is_exhausted

Проверяет, не осталось ли повторных попыток.

is_exhausted(settings: Dict[str, Any]) -> bool

Параметры

Имя Описание
settings
Обязательно

параметры повтора

Возвращаемое значение

Тип Описание

False, если у вас больше повторных попыток. Значение true, если повторные попытки исчерпаны.

is_retry

Проверяет, допускается ли повторная попытка кода метода или состояния.

На основе списков разрешений и переменных управления, таких как общее количество повторных попыток, необходимо ли учитывать заголовок Retry-After, присутствует ли этот заголовок и находится ли возвращенный код состояния в списке кодов состояния, которые необходимо повторить при наличии указанного выше заголовка.

Поведение:

  •   If status_code < 400: don't retry
    
  •   Else if Retry-After present: retry
    
  •   Else: retry based on the safe status code list ([408, 429, 500, 502, 503, 504])
    
is_retry(settings: Dict[str, Any], response: PipelineResponse[HTTPRequestType, AllHttpResponseType]) -> bool

Параметры

Имя Описание
settings
Обязательно

Параметры повтора.

response
Обязательно

Объект PipelineResponse

Возвращаемое значение

Тип Описание

Значение true, если метод или код состояния можно повторить. False, если не допускается повторная попытка.

no_retries

Отключите повторные попытки.

no_retries() -> ClsRetryPolicy

Возвращаемое значение

Тип Описание

Политика повторных попыток с отключенными повторными попытками.

parse_retry_after

Вспомогательный метод для анализа Retry-After и получения значения в секундах.

parse_retry_after(retry_after: str) -> float

Параметры

Имя Описание
retry_after
Обязательно
str

заголовок Retry-After

Возвращаемое значение

Тип Описание

Значение Retry-After в секундах.

send

Использует настроенную политику повтора для отправки запроса следующей политике в конвейере.

async send(request: PipelineRequest[HTTPRequestType]) -> PipelineResponse[HTTPRequestType, AsyncHTTPResponseType]

Параметры

Имя Описание
request
Обязательно

Объект PipelineRequest

Возвращаемое значение

Тип Описание

Возвращает pipelineResponse или вызывает ошибку, если превышено максимальное количество повторных попыток.

sleep

Спящий режим между повторными попытками.

Этот метод учитывает заголовок ответа сервера Retry-After и спящий режим в течение запрошенного времени. Если этого нет, будет использоваться экспоненциальная задержка. По умолчанию коэффициент отката равен 0, и этот метод возвращает немедленно.

async sleep(settings: Dict[str, Any], transport: AsyncHttpTransport[HTTPRequestType, AsyncHTTPResponseType], response: PipelineResponse[HTTPRequestType, AsyncHTTPResponseType] | None = None) -> None

Параметры

Имя Описание
settings
Обязательно

Параметры повтора.

transport
Обязательно

Тип транспорта HTTP.

response

Объект PipelineResponse.

значение по умолчанию: None

update_context

Обновления журнал повторных попыток в контексте конвейера.

update_context(context: PipelineContext, retry_settings: Dict[str, Any]) -> None

Параметры

Имя Описание
context
Обязательно

Контекст конвейера.

retry_settings
Обязательно

Параметры повтора.

Атрибуты

BACKOFF_MAX

Максимальное время отката.

BACKOFF_MAX = 120

next

Указатель на следующую политику или транспорт (в виде политики). Будет задано при создании конвейера.

next: AsyncHTTPPolicy[HTTPRequestType, AsyncHTTPResponseType]