AsyncRetryPolicy Classe

Sabor assíncrono da política de repetição.

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

Herança
azure.core.pipeline.policies._retry.RetryPolicyBase
AsyncRetryPolicy
azure.core.pipeline.policies._base_async.AsyncHTTPPolicy
AsyncRetryPolicy

Construtor

AsyncRetryPolicy(**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 deve repetir. Estes são erros gerados antes de o pedido ser enviado para o servidor remoto, que assumimos 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 recuo a aplicar entre tentativas após a segunda tentativa (a maioria dos erros é resolvida imediatamente por uma segunda tentativa sem demora). A política de repetição irá suspender durante: {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 folga. O valor predefinido é 120 segundos (2 minutos).

Exemplos

Configurar uma política de repetição assíncrona.


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

Métodos

configure_retries

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

get_backoff_time

Devolve a hora de trás 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 método/código de 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 mencionado anteriormente.

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

Programa auxiliar para analisar Retry-After e obter valor em segundos.

send

Utiliza a política de repetição configurada para enviar o pedido para a política seguinte no pipeline.

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 recuo 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 trás 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 recuo 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 do 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 estiverem disponíveis mais tentativas de repetição, caso contrário Falso

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 forem esgotadas.

is_retry

Verifica se o método/código de 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 mencionado anteriormente.

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

Verdadeiro se o método/código de estado for reativado. Falso se não for reativado.

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

Programa 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

Utiliza a política de repetição configurada para enviar o pedido para a política seguinte no pipeline.

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

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.

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 recuo exponencial. Por predefinição, o fator de backoff é 0 e este método será devolvido imediatamente.

async sleep(settings: Dict[str, Any], transport: AsyncHttpTransport[HTTPRequestType, AsyncHTTPResponseType], response: PipelineResponse[HTTPRequestType, AsyncHTTPResponseType] | 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 recuo.

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: AsyncHTTPPolicy[HTTPRequestType, AsyncHTTPResponseType]