RetryPolicy Classe
Criteri di ripetizione dei tentativi.
I criteri di ripetizione dei tentativi nella pipeline possono essere configurati direttamente o modificati in base a ogni chiamata.
- Ereditarietà
-
azure.core.pipeline.policies._retry.RetryPolicyBaseRetryPolicyazure.core.pipeline.policies._base.HTTPPolicyRetryPolicy
Costruttore
RetryPolicy(**kwargs: Any)
Parametri di sole parole chiave
Nome | Descrizione |
---|---|
retry_total
|
Numero totale di tentativi da consentire. Ha la precedenza su altri conteggi. Il valore predefinito è 10. |
retry_connect
|
Numero di errori correlati alla connessione da ripetere. Questi sono errori generati prima dell'invio della richiesta al server remoto, che si presuppone che il server non sia stato attivato per elaborare la richiesta. Il valore predefinito è 3. |
retry_read
|
Numero di tentativi di ripetizione degli errori di lettura. Questi errori vengono generati dopo l'invio della richiesta al server, pertanto la richiesta potrebbe avere effetti collaterali. Il valore predefinito è 3. |
retry_status
|
Quante volte riprovare sui codici di stato non valido. Il valore predefinito è 3. |
retry_backoff_factor
|
Fattore di backoff da applicare tra i tentativi dopo il secondo tentativo (la maggior parte degli errori viene risolta immediatamente da un secondo tentativo senza ritardo). In modalità fissa, i criteri di ripetizione dei tentativi saranno sempre in sospensione per {fattore backoff}. In modalità 'esponenziale', i criteri di ripetizione dei tentativi verranno interrotti per: {backoff factor} * (2 ** ({numero di tentativi totali} - 1)) secondi. Se l'backoff_factor è 0,1, il tentativo verrà riposato per [0,0, 0,2s, 0,4s, ...] tra i tentativi. Il valore predefinito è 0,8. |
retry_backoff_max
|
Tempo massimo di off off. Il valore predefinito è 120 secondi (2 minuti). |
retry_mode
|
Correzione o ritardo esponenziale tra attemp, il valore predefinito è esponenziale. |
timeout
|
L'impostazione di timeout per l'operazione in secondi è 604800s (7 giorni). |
Esempio
Configurazione di un criterio di ripetizione dei tentativi.
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"],
)
Metodi
configure_retries |
Configura le impostazioni di ripetizione dei tentativi. |
get_backoff_time |
Restituisce il tempo di backoff corrente. |
get_retry_after |
Ottenere il valore di Retry-After in secondi. |
increment |
Incrementare i contatori dei tentativi. |
is_exhausted |
Verifica se vengono eseguiti tentativi. |
is_retry |
Verifica se il codice metodo/stato è riprovabile. In base alle variabili consentite e di controllo, ad esempio il numero di tentativi totali da consentire, se rispettare l'intestazione Retry-After, se questa intestazione è presente e se il codice di stato restituito è nell'elenco dei codici di stato da ripetere sulla presenza dell'intestazione precedente. Il comportamento è:
|
no_retries |
Disabilitare i tentativi. |
parse_retry_after |
Helper per analizzare Retry-After e ottenere il valore in secondi. |
send |
Invia l'oggetto PipelineRequest al criterio successivo. Usa le impostazioni di ripetizione dei tentativi, se necessario. |
sleep |
Sospensione tra tentativi di ripetizione. Questo metodo rispetta l'intestazione di risposta di |
update_context |
Aggiornamenti cronologia dei tentativi nel contesto della pipeline. |
configure_retries
Configura le impostazioni di ripetizione dei tentativi.
configure_retries(options: Dict[str, Any]) -> Dict[str, Any]
Parametri
Nome | Descrizione |
---|---|
options
Necessario
|
argomenti delle parole chiave dal contesto. |
Restituisce
Tipo | Descrizione |
---|---|
Un dict contenente impostazioni e cronologia per i tentativi. |
get_backoff_time
Restituisce il tempo di backoff corrente.
get_backoff_time(settings: Dict[str, Any]) -> float
Parametri
Nome | Descrizione |
---|---|
settings
Necessario
|
Impostazioni di ripetizione dei tentativi. |
Restituisce
Tipo | Descrizione |
---|---|
Valore di backoff corrente. |
get_retry_after
Ottenere il valore di Retry-After in secondi.
get_retry_after(response: PipelineResponse[Any, AllHttpResponseType]) -> float | None
Parametri
Nome | Descrizione |
---|---|
response
Necessario
|
Oggetto PipelineResponse |
Restituisce
Tipo | Descrizione |
---|---|
Valore di Retry-After in secondi. |
increment
Incrementare i contatori dei tentativi.
increment(settings: Dict[str, Any], response: PipelineRequest[HTTPRequestType] | PipelineResponse[HTTPRequestType, AllHttpResponseType] | None = None, error: Exception | None = None) -> bool
Parametri
Nome | Descrizione |
---|---|
settings
Necessario
|
Impostazioni di ripetizione dei tentativi. |
response
|
Oggetto di risposta della pipeline. valore predefinito: None
|
error
|
Errore durante la richiesta o Nessuna se la risposta è stata ricevuta correttamente. valore predefinito: None
|
Restituisce
Tipo | Descrizione |
---|---|
Se è disponibile un tentativo di ripetizione dei tentativi True se sono disponibili altri tentativi, False in caso contrario, False |
is_exhausted
Verifica se vengono eseguiti tentativi.
is_exhausted(settings: Dict[str, Any]) -> bool
Parametri
Nome | Descrizione |
---|---|
settings
Necessario
|
impostazioni di ripetizione dei tentativi |
Restituisce
Tipo | Descrizione |
---|---|
False se hanno più tentativi. True se i tentativi sono esauriti. |
is_retry
Verifica se il codice metodo/stato è riprovabile.
In base alle variabili consentite e di controllo, ad esempio il numero di tentativi totali da consentire, se rispettare l'intestazione Retry-After, se questa intestazione è presente e se il codice di stato restituito è nell'elenco dei codici di stato da ripetere sulla presenza dell'intestazione precedente.
Il 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
Parametri
Nome | Descrizione |
---|---|
settings
Necessario
|
Impostazioni di ripetizione dei tentativi. |
response
Necessario
|
Oggetto PipelineResponse |
Restituisce
Tipo | Descrizione |
---|---|
True se il codice metodo/stato è riprovabile. False se non è possibile riprovare. |
no_retries
Disabilitare i tentativi.
no_retries() -> ClsRetryPolicy
Restituisce
Tipo | Descrizione |
---|---|
Criteri di ripetizione dei tentativi con tentativi disabilitati. |
parse_retry_after
Helper per analizzare Retry-After e ottenere il valore in secondi.
parse_retry_after(retry_after: str) -> float
Parametri
Nome | Descrizione |
---|---|
retry_after
Necessario
|
intestazione Retry-After |
Restituisce
Tipo | Descrizione |
---|---|
Valore di Retry-After in secondi. |
send
Invia l'oggetto PipelineRequest al criterio successivo. Usa le impostazioni di ripetizione dei tentativi, se necessario.
send(request: PipelineRequest[HTTPRequestType]) -> PipelineResponse[HTTPRequestType, HTTPResponseType]
Parametri
Nome | Descrizione |
---|---|
request
Necessario
|
Oggetto PipelineRequest |
Restituisce
Tipo | Descrizione |
---|---|
Restituisce l'errore PipelineResponse o genera un errore se sono stati superati i tentativi massimi. |
Eccezioni
Tipo | Descrizione |
---|---|
azure.core.exceptions.AzureError if maximum retries exceeded.
|
|
azure.core.exceptions.ClientAuthenticationError if authentication
|
sleep
Sospensione tra tentativi di ripetizione.
Questo metodo rispetta l'intestazione di risposta di Retry-After
un server e dorme la durata dell'ora richiesta. Se non è presente, userà un backoff esponenziale. Per impostazione predefinita, il fattore backoff è 0 e questo metodo restituirà immediatamente.
sleep(settings: Dict[str, Any], transport: HttpTransport[HTTPRequestType, HTTPResponseType], response: PipelineResponse[HTTPRequestType, HTTPResponseType] | None = None) -> None
Parametri
Nome | Descrizione |
---|---|
settings
Necessario
|
Impostazioni di ripetizione dei tentativi. |
transport
Necessario
|
Tipo di trasporto HTTP. |
response
|
Oggetto PipelineResponse. valore predefinito: None
|
update_context
Aggiornamenti cronologia dei tentativi nel contesto della pipeline.
update_context(context: PipelineContext, retry_settings: Dict[str, Any]) -> None
Parametri
Nome | Descrizione |
---|---|
context
Necessario
|
Contesto della pipeline. |
retry_settings
Necessario
|
Impostazioni di ripetizione dei tentativi. |
Attributi
BACKOFF_MAX
Tempo di backoff massimo.
BACKOFF_MAX = 120
next
Puntatore al criterio successivo o a un trasporto (eseguito come criterio). Verrà impostato alla creazione della pipeline.
next: HTTPPolicy[HTTPRequestType, HTTPResponseType]
Azure SDK for Python