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.RetryPolicyBaseAsyncRetryPolicyazure.core.pipeline.policies._base_async.AsyncHTTPPolicyAsyncRetryPolicy
Construtor
AsyncRetryPolicy(**kwargs: Any)
Parâmetros Só de Palavra-Chave
Name | Description |
---|---|
retry_total
|
Número total de tentativas a permitir. Tem precedência sobre outras contagens. O valor predefinido é 10. |
retry_connect
|
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
|
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
|
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
|
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 é:
|
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 |
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
|
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]
Azure SDK for Python