Aracılığıyla paylaş


RetryPolicy Sınıf

Yeniden deneme ilkesi.

İşlem hattındaki yeniden deneme ilkesi doğrudan yapılandırılabilir veya çağrı temelinde ince ayar yapılabilir.

Devralma
azure.core.pipeline.policies._retry.RetryPolicyBase
RetryPolicy
azure.core.pipeline.policies._base.HTTPPolicy
RetryPolicy

Oluşturucu

RetryPolicy(**kwargs: Any)

Yalnızca Anahtar Sözcük Parametreleri

Name Description
retry_total
int

İzin vermek için toplam yeniden deneme sayısı. Diğer sayılardan önceliklidir. Varsayılan değer 10'dur.

retry_connect
int

Yeniden denenecek bağlantıyla ilgili hataların sayısı. Bunlar, istek uzak sunucuya gönderilmeden önce ortaya çıkan hatalardır ve sunucuyu isteği işlemek için tetiklemediğini varsayarız. Varsayılan değer 3’tür.

retry_read
int

Okuma hatalarında yeniden deneme sayısı. İstek sunucuya gönderildikten sonra bu hatalar oluşur, bu nedenle isteğin yan etkileri olabilir. Varsayılan değer 3’tür.

retry_status
int

Hatalı durum kodlarının kaç kez yeniden denenebileceği. Varsayılan değer 3’tür.

retry_backoff_factor

İkinci denemeden sonra girişimler arasında uygulanacak bir geri alma faktörü (çoğu hata gecikme olmadan ikinci bir denemeyle hemen çözülür). Sabit modda, yeniden deneme ilkesi {backoff factor} için her zaman uyku moduna geçer. 'Üstel' modda, yeniden deneme ilkesi şu süre boyunca uyku moduna geçer: {backoff factor} * (2 ** ({toplam yeniden deneme sayısı} - 1)) saniye. backoff_factor 0,1 ise yeniden denemeler arasında [0,0s, 0,2s, 0,4s, ...] için yeniden deneme uyku moduna alır. Varsayılan değer 0,8'dir.

retry_backoff_max
int

İzin süresi üst sınırı. Varsayılan değer 120 saniyedir (2 dakika).

retry_mode

Attemps arasındaki gecikme sabit veya üstel, varsayılan üsteldir.

timeout
int

saniye cinsinden işlem için zaman aşımı ayarı varsayılan olarak 604800s (7 gün) şeklindedir.

Örnekler

Yeniden deneme ilkesini yapılandırma.


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

Yöntemler

configure_retries

Yeniden deneme ayarlarını yapılandırılır.

get_backoff_time

Geçerli geri alma süresini döndürür.

get_retry_after

saniye olarak Retry-After değerini alır.

increment

Yeniden deneme sayaçlarını artırma.

is_exhausted

Kalan yeniden deneme olup olmadığını denetler.

is_retry

Yöntem/durum kodunun yeniden denenip denenmediğini denetler.

İzin verilenler listesine ve izin verilen toplam yeniden deneme sayısı, Retry-After üst bilgisine uyulup uyulmayacağı, bu üst bilginin mevcut olup olmadığı ve döndürülen durum kodunun yukarıda belirtilen üst bilginin varlığında yeniden denenecek durum kodları listesinde olup olmadığı gibi denetim değişkenlerine göre.

Davranış:

  •   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

Yeniden denemeleri devre dışı bırakın.

parse_retry_after

Retry-After ayrıştırmak ve saniyeler içinde değer almak için yardımcı.

send

PipelineRequest nesnesini bir sonraki ilkeye gönderir. Gerekirse yeniden deneme ayarlarını kullanır.

sleep

Yeniden deneme girişimleri arasında uyku.

Bu yöntem sunucunun yanıt üst bilgisine Retry-After saygı gösterir ve istenen süre boyunca uyku moduna alır. Bu mevcut değilse, üstel geri çekilme kullanır. Varsayılan olarak geri alma faktörü 0'dır ve bu yöntem hemen döndürülecektir.

update_context

İşlem hattı bağlamında yeniden deneme geçmişini Güncelleştirmeler.

configure_retries

Yeniden deneme ayarlarını yapılandırılır.

configure_retries(options: Dict[str, Any]) -> Dict[str, Any]

Parametreler

Name Description
options
Gerekli

bağlamdan anahtar sözcük bağımsız değişkenleri.

Döndürülenler

Tür Description

Yeniden denemeler için ayarları ve geçmişi içeren bir dict.

get_backoff_time

Geçerli geri alma süresini döndürür.

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

Parametreler

Name Description
settings
Gerekli

Yeniden deneme ayarları.

Döndürülenler

Tür Description

Geçerli geri alma değeri.

get_retry_after

saniye olarak Retry-After değerini alır.

get_retry_after(response: PipelineResponse[Any, AllHttpResponseType]) -> float | None

Parametreler

Name Description
response
Gerekli

PipelineResponse nesnesi

Döndürülenler

Tür Description

saniye olarak Retry-After değeri.

increment

Yeniden deneme sayaçlarını artırma.

increment(settings: Dict[str, Any], response: PipelineRequest[HTTPRequestType] | PipelineResponse[HTTPRequestType, AllHttpResponseType] | None = None, error: Exception | None = None) -> bool

Parametreler

Name Description
settings
Gerekli

Yeniden deneme ayarları.

response

İşlem hattı yanıt nesnesi.

varsayılan değer: None
error

İstek sırasında bir hatayla karşılaşıldı veya yanıt başarıyla alındıysa Hiçbiri.

varsayılan değer: None

Döndürülenler

Tür Description

Daha fazla yeniden deneme girişimi varsa herhangi bir yeniden deneme girişiminin kullanılabilir olup olmadığı True, aksi takdirde Yanlış

is_exhausted

Kalan yeniden deneme olup olmadığını denetler.

is_exhausted(settings: Dict[str, Any]) -> bool

Parametreler

Name Description
settings
Gerekli

yeniden deneme ayarları

Döndürülenler

Tür Description

Daha fazla yeniden deneme varsa False. Yeniden denemeler tükenirse true.

is_retry

Yöntem/durum kodunun yeniden denenip denenmediğini denetler.

İzin verilenler listesine ve izin verilen toplam yeniden deneme sayısı, Retry-After üst bilgisine uyulup uyulmayacağı, bu üst bilginin mevcut olup olmadığı ve döndürülen durum kodunun yukarıda belirtilen üst bilginin varlığında yeniden denenecek durum kodları listesinde olup olmadığı gibi denetim değişkenlerine göre.

Davranış:

  •   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

Parametreler

Name Description
settings
Gerekli

Yeniden deneme ayarları.

response
Gerekli

PipelineResponse nesnesi

Döndürülenler

Tür Description

Yöntem/durum kodu yeniden denenebilirse True. Yeniden denenemiyorsa false.

no_retries

Yeniden denemeleri devre dışı bırakın.

no_retries() -> ClsRetryPolicy

Döndürülenler

Tür Description

Yeniden denemeler devre dışı bırakılmış bir yeniden deneme ilkesi.

parse_retry_after

Retry-After ayrıştırmak ve saniyeler içinde değer almak için yardımcı.

parse_retry_after(retry_after: str) -> float

Parametreler

Name Description
retry_after
Gerekli
str

Retry-After üst bilgisi

Döndürülenler

Tür Description

saniye olarak Retry-After değeri.

send

PipelineRequest nesnesini bir sonraki ilkeye gönderir. Gerekirse yeniden deneme ayarlarını kullanır.

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

Parametreler

Name Description
request
Gerekli

PipelineRequest nesnesi

Döndürülenler

Tür Description

PipelineResponse döndürür veya en fazla yeniden deneme sayısı aşılırsa hata verir.

Özel durumlar

Tür Description
azure.core.exceptions.AzureError if maximum retries exceeded.
azure.core.exceptions.ClientAuthenticationError if authentication

sleep

Yeniden deneme girişimleri arasında uyku.

Bu yöntem sunucunun yanıt üst bilgisine Retry-After saygı gösterir ve istenen süre boyunca uyku moduna alır. Bu mevcut değilse, üstel geri çekilme kullanır. Varsayılan olarak geri alma faktörü 0'dır ve bu yöntem hemen döndürülecektir.

sleep(settings: Dict[str, Any], transport: HttpTransport[HTTPRequestType, HTTPResponseType], response: PipelineResponse[HTTPRequestType, HTTPResponseType] | None = None) -> None

Parametreler

Name Description
settings
Gerekli

Yeniden deneme ayarları.

transport
Gerekli

HTTP aktarım türü.

response

PipelineResponse nesnesi.

varsayılan değer: None

update_context

İşlem hattı bağlamında yeniden deneme geçmişini Güncelleştirmeler.

update_context(context: PipelineContext, retry_settings: Dict[str, Any]) -> None

Parametreler

Name Description
context
Gerekli

İşlem hattı bağlamı.

retry_settings
Gerekli

Yeniden deneme ayarları.

Öznitelikler

BACKOFF_MAX

Maksimum geri çekilme süresi.

BACKOFF_MAX = 120

next

Sonraki ilkenin veya taşımanın işaretçisi (ilke olarak sarmalanmış). İşlem hattı oluşturma sırasında ayarlanır.

next: HTTPPolicy[HTTPRequestType, HTTPResponseType]