Partager via


RetryPolicy Classe

Stratégie de nouvelle tentative.

La stratégie de nouvelle tentative dans le pipeline peut être configurée directement ou modifiée par appel.

Héritage
azure.core.pipeline.policies._retry.RetryPolicyBase
RetryPolicy
azure.core.pipeline.policies._base.HTTPPolicy
RetryPolicy

Constructeur

RetryPolicy(**kwargs: Any)

Paramètres de mot clé uniquement

Nom Description
retry_total
int

Nombre total de nouvelles tentatives à autoriser. Est prioritaire sur les autres décomptes. 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, qui, selon nous, n’a pas déclenché le serveur pour traiter la demande. La valeur par défaut est 3.

retry_read
int

Nombre de nouvelles tentatives en cas d’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

Nombre de tentatives pour des codes de status incorrects. La valeur par défaut est 3.

retry_backoff_factor

Facteur d’interruption à 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). En mode fixe, la stratégie de nouvelle tentative est toujours mise en veille pour {facteur d’interruption}. En mode « exponentiel », la stratégie de nouvelle tentative est mise en veille pendant : {facteur d’interruption} * (2 ** ({nombre de nouvelles tentatives totales} - 1)) secondes. Si la backoff_factor est 0.1, la nouvelle tentative est mise en veille pour [0.0s, 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).

retry_mode

Délai fixe ou exponentiel entre les attemps, la valeur par défaut est exponentielle.

timeout
int

Paramètre de délai d’expiration pour l’opération en secondes, la valeur par défaut est 604800s (7 jours).

Exemples

Configuration d’une stratégie de nouvelle tentative.


   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"],
   )

Méthodes

configure_retries

Configure les paramètres de nouvelle tentative.

get_backoff_time

Retourne l’heure d’interruption actuelle.

get_retry_after

Obtenez la valeur de Retry-After en secondes.

increment

Incrémentez les compteurs de nouvelles tentatives.

is_exhausted

Vérifie si des nouvelles tentatives sont laissées.

is_retry

Vérifie si la méthode/le code status peut faire de nouvelles tentatives.

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

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

send

Envoie l’objet PipelineRequest à la stratégie suivante. Utilise les paramètres de nouvelle tentative si nécessaire.

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é. Si cela n’est pas présent, il utilise un backoff exponentiel. Par défaut, le facteur d’interruption 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’interruption actuelle.

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

Paramètres

Nom Description
settings
Obligatoire

Paramètres de nouvelle tentative.

Retours

Type Description

Valeur d’interruption 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

Une erreur s’est produite 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 sont disponibles, False dans le cas contraire

is_exhausted

Vérifie si des nouvelles tentatives sont laissées.

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 d’autres tentatives. True si les nouvelles tentatives sont épuisées.

is_retry

Vérifie si la méthode/le code status peut faire de nouvelles tentatives.

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

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

Cette propriété a la valeur True si la méthode/status code peut faire de nouvelles tentatives. 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 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

Envoie l’objet PipelineRequest à la stratégie suivante. Utilise les paramètres de nouvelle tentative si nécessaire.

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

Paramètres

Nom Description
request
Obligatoire

Objet PipelineRequest

Retours

Type Description

Retourne pipelineResponse ou génère une erreur si le nombre maximal de tentatives est dépassé.

Exceptions

Type Description
azure.core.exceptions.AzureError if maximum retries exceeded.
azure.core.exceptions.ClientAuthenticationError if authentication

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é. Si cela n’est pas présent, il utilise un backoff exponentiel. Par défaut, le facteur d’interruption est 0 et cette méthode retourne immédiatement.

sleep(settings: Dict[str, Any], transport: HttpTransport[HTTPRequestType, HTTPResponseType], response: PipelineResponse[HTTPRequestType, HTTPResponseType] | 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

Temps d’interruption maximal.

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: HTTPPolicy[HTTPRequestType, HTTPResponseType]