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.RetryPolicyBaseRetryPolicyazure.core.pipeline.policies._base.HTTPPolicyRetryPolicy
Construtor
RetryPolicy(**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 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
|
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 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
|
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
|
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 é:
|
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 |
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
|
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]
Azure SDK for Python