AsyncRetryPolicy Classe
Saveur asynchrone de la stratégie de nouvelle tentative.
La stratégie de nouvelle tentative asynchrone dans le pipeline peut être configurée directement ou modifiée par appel.
- Héritage
-
azure.core.pipeline.policies._retry.RetryPolicyBaseAsyncRetryPolicyazure.core.pipeline.policies._base_async.AsyncHTTPPolicyAsyncRetryPolicy
Constructeur
AsyncRetryPolicy(**kwargs: Any)
Paramètres de mot clé uniquement
Nom | Description |
---|---|
retry_total
|
Nombre total de nouvelles tentatives à autoriser. Est prioritaire sur d’autres nombres. La valeur par défaut est 10. |
retry_connect
|
Nombre d’erreurs liées à la connexion à retenter. Il s’agit d’erreurs générées avant l’envoi de la demande au serveur distant, ce qui, nous supposons, n’a pas déclenché le serveur pour traiter la demande. La valeur par défaut est 3. |
retry_read
|
Combien de fois pour réessayer sur des erreurs de lecture. Ces erreurs sont générées après l’envoi de la demande au serveur, de sorte que la demande peut avoir des effets secondaires. La valeur par défaut est 3. |
retry_status
|
Combien de fois réessayer sur des codes de status incorrects. La valeur par défaut est 3. |
retry_backoff_factor
|
Facteur d’annulation à appliquer entre les tentatives après la deuxième tentative (la plupart des erreurs sont résolues immédiatement par un deuxième essai sans délai). La stratégie de nouvelle tentative est mise en veille pour : {facteur d’interruption} * (2 ** ({nombre de nouvelles tentatives} - 1)) secondes. Si le backoff_factor est 0,1, la nouvelle tentative est mise en veille pour [0,0, 0,2s, 0,4s, ...] entre les nouvelles tentatives. La valeur par défaut est 0,8. |
retry_backoff_max
|
Temps d’arrêt maximal. La valeur par défaut est 120 secondes (2 minutes). |
Exemples
Configuration d’une stratégie de nouvelle tentative asynchrone.
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"],
)
Méthodes
configure_retries |
Configure les paramètres de nouvelle tentative. |
get_backoff_time |
Retourne l’heure d’backoff actuelle. |
get_retry_after |
Obtenez la valeur de Retry-After en secondes. |
increment |
Incrémentez les compteurs de nouvelles tentatives. |
is_exhausted |
Vérifie s’il reste des nouvelles tentatives. |
is_retry |
Vérifie si le code de méthode/status est retenable. En fonction des listes d’autorisation et des variables de contrôle telles que le nombre total de nouvelles tentatives à autoriser, s’il faut respecter l’en-tête Retry-After, si cet en-tête est présent et si le code status retourné figure dans la liste des codes status à retenter en cas de présence de l’en-tête ci-dessus. Le comportement est le suivant :
|
no_retries |
Désactivez les nouvelles tentatives. |
parse_retry_after |
Assistance pour analyser Retry-After et obtenir la valeur en quelques secondes. |
send |
Utilise la stratégie de nouvelle tentative configurée pour envoyer la demande à la stratégie suivante dans le pipeline. |
sleep |
Veillez entre les tentatives de nouvelle tentative. Cette méthode respecte l’en-tête de réponse d’un |
update_context |
Mises à jour l’historique des nouvelles tentatives dans le contexte du pipeline. |
configure_retries
Configure les paramètres de nouvelle tentative.
configure_retries(options: Dict[str, Any]) -> Dict[str, Any]
Paramètres
Nom | Description |
---|---|
options
Obligatoire
|
mot clé arguments du contexte. |
Retours
Type | Description |
---|---|
dict contenant les paramètres et l’historique des nouvelles tentatives. |
get_backoff_time
Retourne l’heure d’backoff actuelle.
get_backoff_time(settings: Dict[str, Any]) -> float
Paramètres
Nom | Description |
---|---|
settings
Obligatoire
|
Paramètres de nouvelle tentative. |
Retours
Type | Description |
---|---|
Valeur de backoff actuelle. |
get_retry_after
Obtenez la valeur de Retry-After en secondes.
get_retry_after(response: PipelineResponse[Any, AllHttpResponseType]) -> float | None
Paramètres
Nom | Description |
---|---|
response
Obligatoire
|
Objet PipelineResponse |
Retours
Type | Description |
---|---|
Valeur de Retry-After en secondes. |
increment
Incrémentez les compteurs de nouvelles tentatives.
increment(settings: Dict[str, Any], response: PipelineRequest[HTTPRequestType] | PipelineResponse[HTTPRequestType, AllHttpResponseType] | None = None, error: Exception | None = None) -> bool
Paramètres
Nom | Description |
---|---|
settings
Obligatoire
|
Paramètres de nouvelle tentative. |
response
|
Objet de réponse de pipeline. valeur par défaut: None
|
error
|
Erreur rencontrée lors de la demande ou Aucune si la réponse a été reçue avec succès. valeur par défaut: None
|
Retours
Type | Description |
---|---|
Indique si une nouvelle tentative est disponible true si d’autres tentatives de nouvelles tentatives sont disponibles, False sinon |
is_exhausted
Vérifie s’il reste des nouvelles tentatives.
is_exhausted(settings: Dict[str, Any]) -> bool
Paramètres
Nom | Description |
---|---|
settings
Obligatoire
|
les paramètres de nouvelle tentative |
Retours
Type | Description |
---|---|
False si vous avez plus de nouvelles tentatives. True si les nouvelles tentatives ont été épuisées. |
is_retry
Vérifie si le code de méthode/status est retenable.
En fonction des listes d’autorisation et des variables de contrôle telles que le nombre total de nouvelles tentatives à autoriser, s’il faut respecter l’en-tête Retry-After, si cet en-tête est présent et si le code status retourné figure dans la liste des codes status à retenter en cas de présence de l’en-tête ci-dessus.
Le comportement est le suivant :
-
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ètres
Nom | Description |
---|---|
settings
Obligatoire
|
Paramètres de nouvelle tentative. |
response
Obligatoire
|
Objet PipelineResponse |
Retours
Type | Description |
---|---|
True si la méthode/status code est retenable. False s’il n’est pas retenable. |
no_retries
Désactivez les nouvelles tentatives.
no_retries() -> ClsRetryPolicy
Retours
Type | Description |
---|---|
Stratégie de nouvelle tentative avec les nouvelles tentatives désactivées. |
parse_retry_after
Assistance pour analyser Retry-After et obtenir la valeur en quelques secondes.
parse_retry_after(retry_after: str) -> float
Paramètres
Nom | Description |
---|---|
retry_after
Obligatoire
|
en-tête Retry-After |
Retours
Type | Description |
---|---|
Valeur de Retry-After en secondes. |
send
Utilise la stratégie de nouvelle tentative configurée pour envoyer la demande à la stratégie suivante dans le pipeline.
async send(request: PipelineRequest[HTTPRequestType]) -> PipelineResponse[HTTPRequestType, AsyncHTTPResponseType]
Paramètres
Nom | Description |
---|---|
request
Obligatoire
|
Objet PipelineRequest |
Retours
Type | Description |
---|---|
Retourne le pipelineResponse ou génère l’erreur si le nombre maximal de nouvelles tentatives est dépassé. |
sleep
Veillez entre les tentatives de nouvelle tentative.
Cette méthode respecte l’en-tête de réponse d’un Retry-After
serveur et met en veille la durée du temps demandé. S’il n’est pas présent, il utilise un backoff exponentiel. Par défaut, le facteur d’backoff est 0 et cette méthode retourne immédiatement.
async sleep(settings: Dict[str, Any], transport: AsyncHttpTransport[HTTPRequestType, AsyncHTTPResponseType], response: PipelineResponse[HTTPRequestType, AsyncHTTPResponseType] | None = None) -> None
Paramètres
Nom | Description |
---|---|
settings
Obligatoire
|
Paramètres de nouvelle tentative. |
transport
Obligatoire
|
Type de transport HTTP. |
response
|
Objet PipelineResponse. valeur par défaut: None
|
update_context
Mises à jour l’historique des nouvelles tentatives dans le contexte du pipeline.
update_context(context: PipelineContext, retry_settings: Dict[str, Any]) -> None
Paramètres
Nom | Description |
---|---|
context
Obligatoire
|
Contexte du pipeline. |
retry_settings
Obligatoire
|
Paramètres de nouvelle tentative. |
Attributs
BACKOFF_MAX
Durée maximale des backoffs.
BACKOFF_MAX = 120
next
Pointeur vers la stratégie ou un transport suivant (encapsulé sous forme de stratégie). Sera défini lors de la création du pipeline.
next: AsyncHTTPPolicy[HTTPRequestType, AsyncHTTPResponseType]
Azure SDK for Python