Condividi tramite


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.RetryPolicyBase
RetryPolicy
azure.core.pipeline.policies._base.HTTPPolicy
RetryPolicy

Costruttore

RetryPolicy(**kwargs: Any)

Parametri di sole parole chiave

Nome Descrizione
retry_total
int

Numero totale di tentativi da consentire. Ha la precedenza su altri conteggi. Il valore predefinito è 10.

retry_connect
int

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
int

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
int

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
int

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
int

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 è:

  •   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

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

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
str

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]