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.RetryPolicyBaseRetryPolicyazure.core.pipeline.policies._base.HTTPPolicyRetryPolicy
Constructeur
RetryPolicy(**kwargs: Any)
Paramètres de mot clé uniquement
Nom | Description |
---|---|
retry_total
|
Nombre total de nouvelles tentatives à autoriser. Est prioritaire sur les autres décomptes. 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, qui, selon nous, n’a pas déclenché le serveur pour traiter la demande. La valeur par défaut est 3. |
retry_read
|
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
|
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
|
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
|
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 :
|
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 |
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
|
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]
Azure SDK for Python