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.RetryPolicyBaseRetryPolicyazure.core.pipeline.policies._base.HTTPPolicyRetryPolicy
Konstruktor
RetryPolicy(**kwargs: Any)
Parametry Tylko słowo kluczowe
Nazwa | Opis |
---|---|
retry_total
|
Łączna liczba ponownych prób do zezwolenia. Ma pierwszeństwo przed innymi liczbami. Wartość domyślna to 10. |
retry_connect
|
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
|
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
|
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
|
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
|
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:
|
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 |
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
|
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]
Azure SDK for Python