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.RetryPolicyBaseAsyncRetryPolicyazure.core.pipeline.policies._base_async.AsyncHTTPPolicyAsyncRetryPolicy
Konstruktor
AsyncRetryPolicy(**kwargs: Any)
Výhradně parametry klíčových slov
Name | Description |
---|---|
retry_total
|
Celkový počet povolených opakování Má přednost před ostatními počty. Výchozí hodnota je 10. |
retry_connect
|
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
|
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
|
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
|
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í:
|
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 |
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
|
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]
Azure SDK for Python