Partager via


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.RetryPolicyBase
AsyncRetryPolicy
azure.core.pipeline.policies._base_async.AsyncHTTPPolicy
AsyncRetryPolicy

Constructeur

AsyncRetryPolicy(**kwargs: Any)

Paramètres de mot clé uniquement

Nom Description
retry_total
int

Nombre total de nouvelles tentatives à autoriser. Est prioritaire sur d’autres nombres. La valeur par défaut est 10.

retry_connect
int

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
int

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
int

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
int

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 :

  •   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

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 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.

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
str

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]