RetryPolicy Класс
Политика повтора.
Политику повторных попыток в конвейере можно настроить напрямую или настроить для каждого вызова.
- Наследование
-
azure.core.pipeline.policies._retry.RetryPolicyBaseRetryPolicyazure.core.pipeline.policies._base.HTTPPolicyRetryPolicy
Конструктор
RetryPolicy(**kwargs: Any)
Параметры Keyword-Only
Имя | Описание |
---|---|
retry_total
|
Общее количество разрешенных повторных попыток. Имеет приоритет над другими счетчиками. Значение по умолчанию — 10. |
retry_connect
|
Количество ошибок, связанных с подключением, для выполнения повторных попыток. Это ошибки, возникающие перед отправкой запроса на удаленный сервер, который, как предполагается, не активировал сервер для обработки запроса. Значение по умолчанию — 3. |
retry_read
|
Количество повторных попыток при чтении ошибок. Эти ошибки возникают после отправки запроса на сервер, поэтому запрос может иметь побочные эффекты. Значение по умолчанию — 3. |
retry_status
|
Количество повторных попыток при неправильном коде состояния. Значение по умолчанию — 3. |
retry_backoff_factor
|
Коэффициент задержки, применяемый между попытками после второй попытки (большинство ошибок устраняются немедленно второй попыткой без задержки). В фиксированном режиме политика повторных попыток всегда будет переходить в спящий режим для {backoff factor}. В экспоненциальном режиме политика повторных попыток будет переходить в спящий режим в течение: {коэффициент задержки} * (2 ** ({общее число повторных попыток} — 1)) секунд. Если backoff_factor равно 0,1, то повторная попытка будет в спящем режиме [0,0s, 0,2s, 0,4s, ...] между повторными попытками. Значение по умолчанию — 0,8. |
retry_backoff_max
|
Максимальное время отката. Значение по умолчанию — 120 секунд (2 минуты). |
retry_mode
|
Фиксированная или экспоненциальная задержка между темами. Значение по умолчанию — экспоненциальная. |
timeout
|
Время ожидания для операции в секундах, по умолчанию — 604800s (7 дней). |
Примеры
Настройка политики повторных попыток.
from azure.core.pipeline.policies import RetryPolicy
retry_policy = RetryPolicy()
# 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 = RetryPolicy.no_retries()
# All of these settings can also be configured per operation.
policies.append(retry_policy)
client: PipelineClient[HttpRequest, HttpResponse] = PipelineClient(base_url=url, policies=policies)
request = HttpRequest("GET", url)
pipeline_response = client._pipeline.run(
request,
retry_total=10,
retry_connect=1,
retry_read=1,
retry_status=5,
retry_backoff_factor=0.5,
retry_backoff_max=120,
retry_on_methods=["GET"],
)
Методы
configure_retries |
Настраивает параметры повтора. |
get_backoff_time |
Возвращает текущее время задержки. |
get_retry_after |
Возвращает значение Retry-After в секундах. |
increment |
Увеличение счетчиков повторных попыток. |
is_exhausted |
Проверяет, не осталось ли повторных попыток. |
is_retry |
Проверяет, допускается ли повторная попытка кода метода или состояния. На основе списков разрешений и переменных управления, таких как общее количество повторных попыток, необходимо ли учитывать заголовок Retry-After, присутствует ли этот заголовок и находится ли возвращенный код состояния в списке кодов состояния, которые необходимо повторить при наличии указанного выше заголовка. Поведение:
|
no_retries |
Отключите повторные попытки. |
parse_retry_after |
Вспомогательный метод для анализа Retry-After и получения значения в секундах. |
send |
Отправляет объект PipelineRequest в следующую политику. При необходимости использует параметры повтора. |
sleep |
Спящий режим между повторными попытками. Этот метод учитывает заголовок ответа сервера |
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
Обязательно
|
заголовок Retry-After |
Возвращаемое значение
Тип | Описание |
---|---|
Значение Retry-After в секундах. |
send
Отправляет объект PipelineRequest в следующую политику. При необходимости использует параметры повтора.
send(request: PipelineRequest[HTTPRequestType]) -> PipelineResponse[HTTPRequestType, HTTPResponseType]
Параметры
Имя | Описание |
---|---|
request
Обязательно
|
Объект PipelineRequest |
Возвращаемое значение
Тип | Описание |
---|---|
Возвращает pipelineResponse или вызывает ошибку, если превышено максимальное количество повторных попыток. |
Исключения
Тип | Описание |
---|---|
azure.core.exceptions.AzureError if maximum retries exceeded.
|
|
azure.core.exceptions.ClientAuthenticationError if authentication
|
sleep
Спящий режим между повторными попытками.
Этот метод учитывает заголовок ответа сервера Retry-After
и спящий режим в течение запрошенного времени. Если этого нет, будет использоваться экспоненциальная задержка. По умолчанию коэффициент отката равен 0, и этот метод возвращает немедленно.
sleep(settings: Dict[str, Any], transport: HttpTransport[HTTPRequestType, HTTPResponseType], response: PipelineResponse[HTTPRequestType, HTTPResponseType] | 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: HTTPPolicy[HTTPRequestType, HTTPResponseType]
Azure SDK for Python