Sdílet prostřednictvím


AsyncRetryPolicy Třída

Asynchronní varianta zásad opakování.

Zásady asynchronního opakování v kanálu je možné nakonfigurovat přímo nebo je upravit pro jednotlivá volání.

Dědičnost
azure.core.pipeline.policies._retry.RetryPolicyBase
AsyncRetryPolicy
azure.core.pipeline.policies._base_async.AsyncHTTPPolicy
AsyncRetryPolicy

Konstruktor

AsyncRetryPolicy(**kwargs: Any)

Výhradně parametry klíčových slov

Name Description
retry_total
int

Celkový počet povolených opakování Má přednost před ostatními počty. Výchozí hodnota je 10.

retry_connect
int

Kolik chyb souvisejících s připojením se má opakovat. Jedná se o chyby vyvolané před odesláním požadavku na vzdálený server, u kterých předpokládáme, že server neaktivoval zpracování požadavku. Výchozí hodnota je 3.

retry_read
int

Kolikrát se má opakovat při čtení chyb. Tyto chyby jsou vyvolány po odeslání požadavku na server, takže požadavek může mít vedlejší účinky. Výchozí hodnota je 3.

retry_status
int

Kolikrát se má opakovat chybný stavový kód. Výchozí hodnota je 3.

retry_backoff_factor

Faktor zpomalování, který se použije mezi pokusy po druhém pokusu (většina chyb se vyřeší okamžitě druhým pokusem bez zpoždění). Zásady opakování budou v režimu spánku po dobu: {backoff factor} * (2 ** ({počet celkového počtu opakování} – 1)) sekund. Pokud je backoff_factor 0,1, pak bude opakování mezi opakováními [0,0 s, 0,2 s, 0,4 s, ...] v režimu spánku. Výchozí hodnota je 0,8.

retry_backoff_max
int

Maximální doba návratu. Výchozí hodnota je 120 sekund (2 minuty).

Příklady

Konfigurace zásady asynchronního opakování


   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

Nakonfiguruje nastavení opakování.

get_backoff_time

Vrátí aktuální čas zásady.

get_retry_after

Získá hodnotu Retry-After v sekundách.

increment

Zvyšte čítače opakování.

is_exhausted

Zkontroluje, jestli nezůstalo nějaké opakování.

is_retry

Zkontroluje, jestli je metoda nebo stavový kód opakovatelný.

Na základě seznamu povolených a řídicích proměnných, jako je počet povolených pokusů celkem, zda se má respektovat hlavička Retry-After, zda je tato hlavička přítomna a zda je vrácený stavový kód v seznamu stavových kódů, který se má opakovat při přítomnosti výše uvedené hlavičky.

Chování je následující:

  •   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

Zakažte opakování.

parse_retry_after

Pomocná rutina k analýze Retry-After a získání hodnoty v sekundách.

send

Použije nakonfigurovanou zásadu opakování k odeslání požadavku do další zásady v kanálu.

sleep

Režim spánku mezi opakovanými pokusy

Tato metoda bude respektovat hlavičku odpovědi serveru Retry-After a dobu trvání požadovaného času v režimu spánku. Pokud není k dispozici, použije se exponenciální zpoždění. Ve výchozím nastavení je faktor zásady 0 a tato metoda se vrátí okamžitě.

update_context

Aktualizace historii opakování v kontextu kanálu.

configure_retries

Nakonfiguruje nastavení opakování.

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

Parametry

Name Description
options
Vyžadováno

argumenty klíčových slov z kontextu.

Návraty

Typ Description

Dict obsahující nastavení a historii opakování.

get_backoff_time

Vrátí aktuální čas zásady.

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

Parametry

Name Description
settings
Vyžadováno

Nastavení opakování.

Návraty

Typ Description

Aktuální hodnota zásady.

get_retry_after

Získá hodnotu Retry-After v sekundách.

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

Parametry

Name Description
response
Vyžadováno

Objekt PipelineResponse

Návraty

Typ Description

Hodnota Retry-After v sekundách.

increment

Zvyšte čítače opakování.

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

Parametry

Name Description
settings
Vyžadováno

Nastavení opakování.

response

Objekt odpovědi kanálu.

výchozí hodnota: None
error

Během požadavku došlo k chybě, nebo žádná, pokud byla odpověď úspěšně přijata.

výchozí hodnota: None

Návraty

Typ Description

Jestli je k dispozici některý pokus o opakování: Pravda, pokud je k dispozici více pokusů o opakování, jinak false.

is_exhausted

Zkontroluje, jestli nezůstalo nějaké opakování.

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

Parametry

Name Description
settings
Vyžadováno

nastavení opakování

Návraty

Typ Description

False, pokud máte více opakování. True, pokud se pokusy o opakování vyčerpaly.

is_retry

Zkontroluje, jestli je metoda nebo stavový kód opakovatelný.

Na základě seznamu povolených a řídicích proměnných, jako je počet povolených pokusů celkem, zda se má respektovat hlavička Retry-After, zda je tato hlavička přítomna a zda je vrácený stavový kód v seznamu stavových kódů, který se má opakovat při přítomnosti výše uvedené hlavičky.

Chování je následující:

  •   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

Name Description
settings
Vyžadováno

Nastavení opakování.

response
Vyžadováno

Objekt PipelineResponse

Návraty

Typ Description

Hodnota True, pokud je metoda nebo stavový kód opakovatelný. Hodnota False, pokud není možné opakovat.

no_retries

Zakažte opakování.

no_retries() -> ClsRetryPolicy

Návraty

Typ Description

Zásady opakování se zakázanými opakováními

parse_retry_after

Pomocná rutina k analýze Retry-After a získání hodnoty v sekundách.

parse_retry_after(retry_after: str) -> float

Parametry

Name Description
retry_after
Vyžadováno
str

záhlaví Retry-After

Návraty

Typ Description

Hodnota Retry-After v sekundách.

send

Použije nakonfigurovanou zásadu opakování k odeslání požadavku do další zásady v kanálu.

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

Parametry

Name Description
request
Vyžadováno

Objekt PipelineRequest

Návraty

Typ Description

Pokud dojde k překročení maximálního počtu opakování, vrátí chybu PipelineResponse nebo vyvolá chybu .

sleep

Režim spánku mezi opakovanými pokusy

Tato metoda bude respektovat hlavičku odpovědi serveru Retry-After a dobu trvání požadovaného času v režimu spánku. Pokud není k dispozici, použije se exponenciální zpoždění. Ve výchozím nastavení je faktor zásady 0 a tato metoda se vrátí okamžitě.

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

Parametry

Name Description
settings
Vyžadováno

Nastavení opakování.

transport
Vyžadováno

Typ přenosu HTTP.

response

Objekt PipelineResponse.

výchozí hodnota: None

update_context

Aktualizace historii opakování v kontextu kanálu.

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

Parametry

Name Description
context
Vyžadováno

Kontext kanálu.

retry_settings
Vyžadováno

Nastavení opakování.

Atributy

BACKOFF_MAX

Maximální doba zásady.

BACKOFF_MAX = 120

next

Ukazatel na další zásadu nebo přenos (zabalený jako zásada) Nastaví se při vytváření kanálu.

next: AsyncHTTPPolicy[HTTPRequestType, AsyncHTTPResponseType]