RetryPolicy Osztály
Újrapróbálkozési szabályzat.
A folyamat újrapróbálkoztatási szabályzata közvetlenül konfigurálható, vagy hívásonként módosítható.
- Öröklődés
-
azure.core.pipeline.policies._retry.RetryPolicyBaseRetryPolicyazure.core.pipeline.policies._base.HTTPPolicyRetryPolicy
Konstruktor
RetryPolicy(**kwargs: Any)
Csak kulcsszavas paraméterek
Name | Description |
---|---|
retry_total
|
Az engedélyezni kívánt újrapróbálkozések teljes száma. Elsőbbséget élvez a többi számlálóval szemben. Az alapértelmezett érték 10. |
retry_connect
|
Hány kapcsolattal kapcsolatos hiba után próbálkozzon újra. Ezek a hibák a kérés távoli kiszolgálóra való elküldése előtt merülnek fel, ami feltételezzük, hogy nem aktiválta a kiszolgálót a kérés feldolgozásához. Az alapértelmezett érték 3. |
retry_read
|
Hányszor kell újrapróbálkoznia az olvasási hibákon. Ezek a hibák a kérés kiszolgálóra való elküldése után jelentkeznek, így a kérésnek lehetnek mellékhatásai. Az alapértelmezett érték 3. |
retry_status
|
Hányszor kell újrapróbálkkoznia a hibás állapotkódokkal. Az alapértelmezett érték 3. |
retry_backoff_factor
|
A második próbálkozás utáni kísérletek közötti visszalépési tényező (a legtöbb hibát azonnal, egy második próbálkozással, késedelem nélkül meg kell oldani). Rögzített módban az újrapróbálkozási szabályzat mindig alvó állapotba kerül a(z) {backoff factor} esetében. "Exponenciális" módban az újrapróbálkozási szabályzat a következőhöz fog aludni: {backoff factor} * (2 ** ({az újrapróbálkozások száma} – 1)) másodperc. Ha a backoff_factor 0,1, akkor az újrapróbálkozás az újrapróbálkozások között [0.0s, 0.2s, 0.4s, ...] állapotban lesz. Az alapértelmezett érték 0,8. |
retry_backoff_max
|
A maximális visszaállási idő. Az alapértelmezett érték 120 másodperc (2 perc). |
retry_mode
|
Rögzített vagy exponenciális késleltetés az attemps között, az alapértelmezett érték exponenciális. |
timeout
|
A művelet időtúllépési beállítása másodpercben, alapértelmezés szerint 604800s (7 nap). |
Példák
Újrapróbálkozási szabályzat konfigurálása.
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"],
)
Metódusok
configure_retries |
Konfigurálja az újrapróbálkozások beállításait. |
get_backoff_time |
Az aktuális visszalépési időt adja vissza. |
get_retry_after |
A Retry-After értékének lekérése másodpercben. |
increment |
Növelje az újrapróbálkozások számlálóit. |
is_exhausted |
Ellenőrzi, hogy maradt-e újrapróbálkozás. |
is_retry |
Ellenőrzi, hogy a metódus/állapotkód újrapróbálható-e. Az engedélyezési listák és a vezérlőváltozók alapján, például az engedélyezett összes újrapróbálkozások száma, a Retry-After fejléc tiszteletben tartása, a fejléc jelen van-e, és hogy a visszaadott állapotkód szerepel-e a fent említett fejléc jelenlétében újrapróbálkozó állapotkódok listájában. A viselkedés a következő:
|
no_retries |
Tiltsa le az újrapróbálkozásokat. |
parse_retry_after |
Segéd a Retry-After elemzéséhez és az érték másodpercben történő lekéréséhez. |
send |
Elküldi a PipelineRequest objektumot a következő szabályzatnak. Szükség esetén újrapróbálkozást használ. |
sleep |
Alvó állapot az újrapróbálkozási kísérletek között. Ez a metódus figyelembe veszi a kiszolgáló válaszfejlécét |
update_context |
Frissítések újrapróbálkozás előzményeit a folyamatkörnyezetben. |
configure_retries
Konfigurálja az újrapróbálkozások beállításait.
configure_retries(options: Dict[str, Any]) -> Dict[str, Any]
Paraméterek
Name | Description |
---|---|
options
Kötelező
|
kulcsszóargumentumok a környezetből. |
Válaszok
Típus | Description |
---|---|
Az újrapróbálkozási beállításokat és előzményeket tartalmazó diktálás. |
get_backoff_time
Az aktuális visszalépési időt adja vissza.
get_backoff_time(settings: Dict[str, Any]) -> float
Paraméterek
Name | Description |
---|---|
settings
Kötelező
|
Az újrapróbálkozás beállításai. |
Válaszok
Típus | Description |
---|---|
Az aktuális visszalépési érték. |
get_retry_after
A Retry-After értékének lekérése másodpercben.
get_retry_after(response: PipelineResponse[Any, AllHttpResponseType]) -> float | None
Paraméterek
Name | Description |
---|---|
response
Kötelező
|
A PipelineResponse objektum |
Válaszok
Típus | Description |
---|---|
A Retry-After értéke másodpercben. |
increment
Növelje az újrapróbálkozások számlálóit.
increment(settings: Dict[str, Any], response: PipelineRequest[HTTPRequestType] | PipelineResponse[HTTPRequestType, AllHttpResponseType] | None = None, error: Exception | None = None) -> bool
Paraméterek
Name | Description |
---|---|
settings
Kötelező
|
Az újrapróbálkozás beállításai. |
response
|
Folyamat válaszobjektuma. alapértelmezett érték: None
|
error
|
Hiba történt a kérés során, vagy Nincs, ha a válasz sikeresen érkezett. alapértelmezett érték: None
|
Válaszok
Típus | Description |
---|---|
Ha több újrapróbálkozási kísérlet áll rendelkezésre, akkor az újrapróbálkozási kísérlet értéke Igaz, máskülönben hamis |
is_exhausted
Ellenőrzi, hogy maradt-e újrapróbálkozás.
is_exhausted(settings: Dict[str, Any]) -> bool
Paraméterek
Name | Description |
---|---|
settings
Kötelező
|
az újrapróbálkozás beállításai |
Válaszok
Típus | Description |
---|---|
Hamis, ha több újrapróbálkozás van. Igaz, ha az újrapróbálkozás kimerült. |
is_retry
Ellenőrzi, hogy a metódus/állapotkód újrapróbálható-e.
Az engedélyezési listák és a vezérlőváltozók alapján, például az engedélyezett összes újrapróbálkozások száma, a Retry-After fejléc tiszteletben tartása, a fejléc jelen van-e, és hogy a visszaadott állapotkód szerepel-e a fent említett fejléc jelenlétében újrapróbálkozó állapotkódok listájában.
A viselkedés a következő:
-
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
Paraméterek
Name | Description |
---|---|
settings
Kötelező
|
Az újrapróbálkozás beállításai. |
response
Kötelező
|
A PipelineResponse objektum |
Válaszok
Típus | Description |
---|---|
Igaz, ha a metódus/állapotkód újrapróbálható. Hamis, ha nem ismételhető. |
no_retries
Tiltsa le az újrapróbálkozásokat.
no_retries() -> ClsRetryPolicy
Válaszok
Típus | Description |
---|---|
Újrapróbálkozásra vonatkozó szabályzat, amelynek az újrapróbálkozása le van tiltva. |
parse_retry_after
Segéd a Retry-After elemzéséhez és az érték másodpercben történő lekéréséhez.
parse_retry_after(retry_after: str) -> float
Paraméterek
Name | Description |
---|---|
retry_after
Kötelező
|
Retry-After fejléc |
Válaszok
Típus | Description |
---|---|
A Retry-After értéke másodpercben. |
send
Elküldi a PipelineRequest objektumot a következő szabályzatnak. Szükség esetén újrapróbálkozást használ.
send(request: PipelineRequest[HTTPRequestType]) -> PipelineResponse[HTTPRequestType, HTTPResponseType]
Paraméterek
Name | Description |
---|---|
request
Kötelező
|
A PipelineRequest objektum |
Válaszok
Típus | Description |
---|---|
Visszaadja a PipelineResponse értéket, vagy hibát jelez, ha túllépte a maximális újrapróbálkozások értékét. |
Kivételek
Típus | Description |
---|---|
azure.core.exceptions.AzureError if maximum retries exceeded.
|
|
azure.core.exceptions.ClientAuthenticationError if authentication
|
sleep
Alvó állapot az újrapróbálkozási kísérletek között.
Ez a metódus figyelembe veszi a kiszolgáló válaszfejlécét Retry-After
, és alvó állapotba kerül a kért idő időtartamával. Ha ez nem jelenik meg, exponenciális visszalépést fog használni. Alapértelmezés szerint a visszalépési tényező 0, és ez a metódus azonnal visszatér.
sleep(settings: Dict[str, Any], transport: HttpTransport[HTTPRequestType, HTTPResponseType], response: PipelineResponse[HTTPRequestType, HTTPResponseType] | None = None) -> None
Paraméterek
Name | Description |
---|---|
settings
Kötelező
|
Az újrapróbálkozás beállításai. |
transport
Kötelező
|
A HTTP-átviteli típus. |
response
|
A PipelineResponse objektum. alapértelmezett érték: None
|
update_context
Frissítések újrapróbálkozás előzményeit a folyamatkörnyezetben.
update_context(context: PipelineContext, retry_settings: Dict[str, Any]) -> None
Paraméterek
Name | Description |
---|---|
context
Kötelező
|
A folyamatkörnyezet. |
retry_settings
Kötelező
|
Az újrapróbálkozás beállításai. |
Attribútumok
BACKOFF_MAX
Maximális visszalépési idő.
BACKOFF_MAX = 120
next
Mutasson a következő szabályzatra vagy egy átvitelre (házirendként burkolva). A folyamat létrehozásakor lesz beállítva.
next: HTTPPolicy[HTTPRequestType, HTTPResponseType]
Azure SDK for Python