RetryPolicy Klasa

Zasady ponawiania.

Zasady ponawiania w potoku można skonfigurować bezpośrednio lub dostosować dla poszczególnych wywołań.

Dziedziczenie
azure.core.pipeline.policies._retry.RetryPolicyBase
RetryPolicy
azure.core.pipeline.policies._base.HTTPPolicy
RetryPolicy

Konstruktor

RetryPolicy(**kwargs: Any)

Parametry Tylko słowo kluczowe

Nazwa Opis
retry_total
int

Łączna liczba ponownych prób do zezwolenia. Ma pierwszeństwo przed innymi liczbami. Wartość domyślna to 10.

retry_connect
int

Ile błędów związanych z połączeniem należy ponowić próbę. Są to błędy zgłaszane przed wysłaniem żądania do serwera zdalnego, który zakładamy, że serwer nie wyzwolił przetwarzania żądania. Wartość domyślna to 3.

retry_read
int

Ile razy należy ponowić próbę przy błędach odczytu. Te błędy są zgłaszane po wysłaniu żądania do serwera, więc żądanie może mieć skutki uboczne. Wartość domyślna to 3.

retry_status
int

Ile razy należy ponowić próbę w przypadku nieprawidłowych kodów stanu. Wartość domyślna to 3.

retry_backoff_factor

Współczynnik wycofywania stosowany między próbami po drugiej próbie (większość błędów jest usuwana natychmiast przez drugą próbę bez opóźnień). W trybie stałym zasady ponawiania zawsze będą w stanie uśpienia dla składnika {backoff}. W trybie wykładniczym zasady ponawiania zostaną uśpine dla: {współczynnik wycofywania} * (2 ** ({liczba ponownych prób} – 1)) sekund. Jeśli backoff_factor wynosi 0,1, ponawianie zostanie spane dla wartości [0.0s, 0.2s, 0.4s, ...] między ponownymi próbami. Wartość domyślna to 0,8.

retry_backoff_max
int

Maksymalny czas wycofywania. Wartość domyślna to 120 sekund (2 minuty).

retry_mode

Stałe lub wykładnicze opóźnienie między attemps, wartość domyślna jest wykładnicza.

timeout
int

Ustawienie limitu czasu dla operacji w sekundach, wartość domyślna to 604800s (7 dni).

Przykłady

Konfigurowanie zasad ponawiania.


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

Metody

configure_retries

Konfiguruje ustawienia ponawiania.

get_backoff_time

Zwraca bieżący czas wycofywania.

get_retry_after

Pobierz wartość Retry-After w sekundach.

increment

Zwiększ liczniki ponawiania prób.

is_exhausted

Sprawdza, czy jakiekolwiek ponawianie prób zostało pozostawione.

is_retry

Sprawdza, czy kod metody/stanu można ponowić próbę.

Na podstawie list dozwolonych i zmiennych sterujących, takich jak liczba dozwolonych ponownych prób, czy należy przestrzegać nagłówka Retry-After, czy ten nagłówek jest obecny, oraz czy zwrócony kod stanu znajduje się na liście kodów stanu, które mają zostać ponawiane na obecności wyżej wymienionego nagłówka.

Zachowanie jest następujące:

  •   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

Wyłącz ponawianie prób.

parse_retry_after

Pomocnik do analizowania Retry-After i uzyskiwania wartości w sekundach.

send

Wysyła obiekt PipelineRequest do następnych zasad. W razie potrzeby używa ustawień ponawiania prób.

sleep

Uśpij między próbami ponawiania prób.

Ta metoda będzie uwzględniać nagłówek odpowiedzi serwera Retry-After i uśpi czas trwania żądanego czasu. Jeśli tak nie jest, użyje wycofywania wykładniczego. Domyślnie współczynnik wycofywania wynosi 0, a ta metoda zwróci natychmiast.

update_context

Aktualizacje historię ponawiania prób w kontekście potoku.

configure_retries

Konfiguruje ustawienia ponawiania.

configure_retries(options: Dict[str, Any]) -> Dict[str, Any]

Parametry

Nazwa Opis
options
Wymagane

argumenty słowa kluczowego z kontekstu.

Zwraca

Typ Opis

Dykt zawierający ustawienia i historię ponownych prób.

get_backoff_time

Zwraca bieżący czas wycofywania.

get_backoff_time(settings: Dict[str, Any]) -> float

Parametry

Nazwa Opis
settings
Wymagane

Ustawienia ponawiania.

Zwraca

Typ Opis

Bieżąca wartość wycofywania.

get_retry_after

Pobierz wartość Retry-After w sekundach.

get_retry_after(response: PipelineResponse[Any, AllHttpResponseType]) -> float | None

Parametry

Nazwa Opis
response
Wymagane

Obiekt PipelineResponse

Zwraca

Typ Opis

Wartość Retry-After w sekundach.

increment

Zwiększ liczniki ponawiania prób.

increment(settings: Dict[str, Any], response: PipelineRequest[HTTPRequestType] | PipelineResponse[HTTPRequestType, AllHttpResponseType] | None = None, error: Exception | None = None) -> bool

Parametry

Nazwa Opis
settings
Wymagane

Ustawienia ponawiania.

response

Obiekt odpowiedzi potoku.

wartość domyślna: None
error

Błąd napotkany podczas żądania lub Brak, jeśli odpowiedź została odebrana pomyślnie.

wartość domyślna: None

Zwraca

Typ Opis

Czy jakakolwiek próba ponawiania jest dostępna wartość True, jeśli więcej ponownych prób jest dostępnych, w przeciwnym razie wartość False

is_exhausted

Sprawdza, czy jakiekolwiek ponawianie prób zostało pozostawione.

is_exhausted(settings: Dict[str, Any]) -> bool

Parametry

Nazwa Opis
settings
Wymagane

ustawienia ponawiania prób

Zwraca

Typ Opis

Fałsz, jeśli ma więcej ponownych prób. Wartość True, jeśli ponowne próby zostały wyczerpane.

is_retry

Sprawdza, czy kod metody/stanu można ponowić próbę.

Na podstawie list dozwolonych i zmiennych sterujących, takich jak liczba dozwolonych ponownych prób, czy należy przestrzegać nagłówka Retry-After, czy ten nagłówek jest obecny, oraz czy zwrócony kod stanu znajduje się na liście kodów stanu, które mają zostać ponawiane na obecności wyżej wymienionego nagłówka.

Zachowanie jest następujące:

  •   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

Parametry

Nazwa Opis
settings
Wymagane

Ustawienia ponawiania.

response
Wymagane

Obiekt PipelineResponse

Zwraca

Typ Opis

Wartość True, jeśli kod metody/stanu można ponowić próbę. Fałsz, jeśli nie można ponowić próby.

no_retries

Wyłącz ponawianie prób.

no_retries() -> ClsRetryPolicy

Zwraca

Typ Opis

Zasady ponawiania z wyłączonymi ponownymi próbami.

parse_retry_after

Pomocnik do analizowania Retry-After i uzyskiwania wartości w sekundach.

parse_retry_after(retry_after: str) -> float

Parametry

Nazwa Opis
retry_after
Wymagane
str

nagłówek Retry-After

Zwraca

Typ Opis

Wartość Retry-After w sekundach.

send

Wysyła obiekt PipelineRequest do następnych zasad. W razie potrzeby używa ustawień ponawiania prób.

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

Parametry

Nazwa Opis
request
Wymagane

Obiekt PipelineRequest

Zwraca

Typ Opis

Zwraca wartość PipelineResponse lub zgłasza błąd w przypadku przekroczenia maksymalnej liczby ponownych prób.

Wyjątki

Typ Opis
azure.core.exceptions.AzureError if maximum retries exceeded.
azure.core.exceptions.ClientAuthenticationError if authentication

sleep

Uśpij między próbami ponawiania prób.

Ta metoda będzie uwzględniać nagłówek odpowiedzi serwera Retry-After i uśpi czas trwania żądanego czasu. Jeśli tak nie jest, użyje wycofywania wykładniczego. Domyślnie współczynnik wycofywania wynosi 0, a ta metoda zwróci natychmiast.

sleep(settings: Dict[str, Any], transport: HttpTransport[HTTPRequestType, HTTPResponseType], response: PipelineResponse[HTTPRequestType, HTTPResponseType] | None = None) -> None

Parametry

Nazwa Opis
settings
Wymagane

Ustawienia ponawiania.

transport
Wymagane

Typ transportu HTTP.

response

Obiekt PipelineResponse.

wartość domyślna: None

update_context

Aktualizacje historię ponawiania prób w kontekście potoku.

update_context(context: PipelineContext, retry_settings: Dict[str, Any]) -> None

Parametry

Nazwa Opis
context
Wymagane

Kontekst potoku.

retry_settings
Wymagane

Ustawienia ponawiania.

Atrybuty

BACKOFF_MAX

Maksymalny czas wycofywania.

BACKOFF_MAX = 120

next

Wskaźnik do następnych zasad lub transportu (opakowany jako zasady). Zostanie ustawiona podczas tworzenia potoku.

next: HTTPPolicy[HTTPRequestType, HTTPResponseType]