RetryPolicy Classe

Uma política de repetição.

A política de repetição no pipeline pode ser configurada diretamente ou ajustada por chamada.

Herança
azure.core.pipeline.policies._retry.RetryPolicyBase
RetryPolicy
azure.core.pipeline.policies._base.HTTPPolicy
RetryPolicy

Construtor

RetryPolicy(**kwargs: Any)

Parâmetros Só de Palavra-Chave

Name Description
retry_total
int

Número total de tentativas a permitir. Tem precedência sobre outras contagens. O valor predefinido é 10.

retry_connect
int

Quantos erros relacionados com a ligação podem repetir. Estes são erros gerados antes de o pedido ser enviado para o servidor remoto, que presumimos não ter acionado o servidor para processar o pedido. O valor predefinido é 3.

retry_read
int

Quantas vezes repetir erros de leitura. Estes erros são gerados após o pedido ter sido enviado para o servidor, pelo que o pedido pode ter efeitos colaterais. O valor predefinido é 3.

retry_status
int

Quantas vezes repetir em códigos de estado incorretos. O valor predefinido é 3.

retry_backoff_factor

Um fator de back-off a aplicar entre tentativas após a segunda tentativa (a maioria dos erros é resolvida imediatamente por uma segunda tentativa sem demora). No modo fixo, a política de repetição irá sempre suspender para {backoff factor}. No modo "exponencial", a política de repetição irá suspender para: {backoff factor} * (2 ** ({número de repetições totais} - 1)) segundos. Se o backoff_factor for 0,1, a repetição irá suspender para [0,0s, 0,2s, 0,4s, ...] entre repetições. O valor predefinido é 0,8.

retry_backoff_max
int

O tempo máximo de back-off. O valor predefinido é 120 segundos (2 minutos).

retry_mode

Corrigido ou exponencial atraso entre attemps, a predefinição é exponencial.

timeout
int

Definição de tempo limite para a operação em segundos, a predefinição é 604800s (7 dias).

Exemplos

Configurar uma política de repetição.


   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"],
   )

Métodos

configure_retries

Configura as definições de repetição.

get_backoff_time

Devolve a hora de back-off atual.

get_retry_after

Obtenha o valor de Retry-After em segundos.

increment

Incremente os contadores de repetição.

is_exhausted

Verifica se restam repetições.

is_retry

Verifica se o código de método/estado é reativado.

Com base em listas de permissões e variáveis de controlo, como o número total de repetições a permitir, se deve respeitar o cabeçalho Retry-After, se este cabeçalho está presente e se o código de estado devolvido está na lista de códigos de estado a serem repetidos na presença do cabeçalho acima mencionado.

O comportamento é:

  •   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

Desative as repetições.

parse_retry_after

Auxiliar para analisar Retry-After e obter valor em segundos.

send

Envia o objeto PipelineRequest para a política seguinte. Utiliza as definições de repetição, se necessário.

sleep

Suspensão entre tentativas de repetição.

Este método respeitará o cabeçalho de resposta de Retry-After um servidor e suspenderá a duração do tempo pedido. Se isso não estiver presente, utilizará um backoff exponencial. Por predefinição, o fator de backoff é 0 e este método será devolvido imediatamente.

update_context

Atualizações histórico de repetições no contexto do pipeline.

configure_retries

Configura as definições de repetição.

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

Parâmetros

Name Description
options
Necessário

argumentos de palavra-chave do contexto.

Devoluções

Tipo Description

Um ditado que contém definições e histórico para repetições.

get_backoff_time

Devolve a hora de back-off atual.

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

Parâmetros

Name Description
settings
Necessário

As definições de repetição.

Devoluções

Tipo Description

O valor de backoff atual.

get_retry_after

Obtenha o valor de Retry-After em segundos.

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

Parâmetros

Name Description
response
Necessário

O objeto PipelineResponse

Devoluções

Tipo Description

Valor de Retry-After em segundos.

increment

Incremente os contadores de repetição.

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

Parâmetros

Name Description
settings
Necessário

As definições de repetição.

response

Um objeto de resposta de pipeline.

valor predefinido: None
error

Foi encontrado um erro durante o pedido ou Nenhum se a resposta tiver sido recebida com êxito.

valor predefinido: None

Devoluções

Tipo Description

Se alguma tentativa de repetição está disponível Verdadeiro se existirem mais tentativas de repetição disponíveis, Falso caso contrário

is_exhausted

Verifica se restam repetições.

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

Parâmetros

Name Description
settings
Necessário

as definições de repetição

Devoluções

Tipo Description

Falso se tiver mais repetições. Verdadeiro se as repetições estiverem esgotadas.

is_retry

Verifica se o código de método/estado é reativado.

Com base em listas de permissões e variáveis de controlo, como o número total de repetições a permitir, se deve respeitar o cabeçalho Retry-After, se este cabeçalho está presente e se o código de estado devolvido está na lista de códigos de estado a serem repetidos na presença do cabeçalho acima mencionado.

O comportamento é:

  •   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

Parâmetros

Name Description
settings
Necessário

As definições de repetição.

response
Necessário

O objeto PipelineResponse

Devoluções

Tipo Description

True if method/status code is retryable. Falso, se não repetir.

no_retries

Desative as repetições.

no_retries() -> ClsRetryPolicy

Devoluções

Tipo Description

Uma política de repetição com repetições desativada.

parse_retry_after

Auxiliar para analisar Retry-After e obter valor em segundos.

parse_retry_after(retry_after: str) -> float

Parâmetros

Name Description
retry_after
Necessário
str

cabeçalho Retry-After

Devoluções

Tipo Description

Valor de Retry-After em segundos.

send

Envia o objeto PipelineRequest para a política seguinte. Utiliza as definições de repetição, se necessário.

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

Parâmetros

Name Description
request
Necessário

O objeto PipelineRequest

Devoluções

Tipo Description

Devolve o PipelineResponse ou gera o erro se as repetições máximas forem excedidas.

Exceções

Tipo Description
azure.core.exceptions.AzureError if maximum retries exceeded.
azure.core.exceptions.ClientAuthenticationError if authentication

sleep

Suspensão entre tentativas de repetição.

Este método respeitará o cabeçalho de resposta de Retry-After um servidor e suspenderá a duração do tempo pedido. Se isso não estiver presente, utilizará um backoff exponencial. Por predefinição, o fator de backoff é 0 e este método será devolvido imediatamente.

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

Parâmetros

Name Description
settings
Necessário

As definições de repetição.

transport
Necessário

O tipo de transporte HTTP.

response

O objeto PipelineResponse.

valor predefinido: None

update_context

Atualizações histórico de repetições no contexto do pipeline.

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

Parâmetros

Name Description
context
Necessário

O contexto do pipeline.

retry_settings
Necessário

As definições de repetição.

Atributos

BACKOFF_MAX

Tempo máximo de backoff.

BACKOFF_MAX = 120

next

Ponteiro para a política seguinte ou um transporte (moldado como uma política). Será definido na criação do pipeline.

next: HTTPPolicy[HTTPRequestType, HTTPResponseType]