Udostępnij za pośrednictwem


AsyncRetryPolicy Klasa

Asynchroniczny smak zasad ponawiania prób.

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

Dziedziczenie
azure.core.pipeline.policies._retry.RetryPolicyBase
AsyncRetryPolicy
azure.core.pipeline.policies._base_async.AsyncHTTPPolicy
AsyncRetryPolicy

Konstruktor

AsyncRetryPolicy(**kwargs: Any)

Parametry Tylko słowo kluczowe

Nazwa Opis
retry_total
int

Całkowita liczba ponownych prób, które mają być dozwolone. 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 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óźnienia). Zasady ponawiania prób uśpią: {współczynnik wycofywania} * (2 ** ({liczba ponownych prób} – 1)) sekund. Jeśli backoff_factor wynosi 0,1, ponawianie próby będzie spać dla [0.0s, 0.2s, 0.4s, ...] między ponownymi próbami. Wartość domyślna to 0,8.

retry_backoff_max
int

Maksymalny czas wolny od pracy. Wartość domyślna to 120 sekund (2 minuty).

Przykłady

Konfigurowanie zasad ponawiania prób asynchronicznych.


   from azure.core.pipeline.policies import AsyncRetryPolicy

   retry_policy = AsyncRetryPolicy()

   # 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 = AsyncRetryPolicy.no_retries()

   # All of these settings can also be configured per operation.
   policies.append(retry_policy)
   async with AsyncPipelineClient[HttpRequest, AsyncHttpResponse](base_url=url, policies=policies) as client:
       response = await client._pipeline.run(
           request,
           retry_total=10,
           retry_connect=1,
           retry_read=1,
           retry_status=5,
           retry_backoff_factor=0.5,
           retry_backoff_max=60,
           retry_on_methods=["GET"],
       )

Metody

configure_retries

Konfiguruje ustawienia ponawiania próby.

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 zostały ponawiane próby.

is_retry

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

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

Zachowanie to:

  •   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

Używa skonfigurowanych zasad ponawiania w celu wysłania żądania do następnych zasad w potoku.

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 zostanie zwrócona natychmiast.

update_context

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

configure_retries

Konfiguruje ustawienia ponawiania próby.

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

Parametry

Nazwa Opis
options
Wymagane

argumenty słów kluczowych 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 prób.

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 prób.

response

Obiekt odpowiedzi potoku.

wartość domyślna: None
error

Wystąpił błąd 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 prób ponawiania prób jest dostępnych, w przeciwnym razie wartość False

is_exhausted

Sprawdza, czy zostały ponawiane próby.

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

Parametry

Nazwa Opis
settings
Wymagane

ustawienia ponawiania próby

Zwraca

Typ Opis

Fałsz, jeśli masz więcej ponownych prób. Prawda, jeśli próby zostały wyczerpane.

is_retry

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

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

Zachowanie to:

  •   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 prób.

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 prób 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

Używa skonfigurowanych zasad ponawiania w celu wysłania żądania do następnych zasad w potoku.

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

Parametry

Nazwa Opis
request
Wymagane

Obiekt PipelineRequest

Zwraca

Typ Opis

Zwraca wartość PipelineResponse lub zgłasza błąd, jeśli przekroczono maksymalną liczbę ponownych 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 zostanie zwrócona natychmiast.

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

Parametry

Nazwa Opis
settings
Wymagane

Ustawienia ponawiania prób.

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 prób.

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: AsyncHTTPPolicy[HTTPRequestType, AsyncHTTPResponseType]