AsyncRetryPolicy Sınıf
Yeniden deneme ilkesinin zaman uyumsuz özelliği.
İşlem hattındaki zaman uyumsuz yeniden deneme ilkesi doğrudan yapılandırılabilir veya arama temelinde ince ayar yapılabilir.
- Devralma
-
azure.core.pipeline.policies._retry.RetryPolicyBaseAsyncRetryPolicyazure.core.pipeline.policies._base_async.AsyncHTTPPolicyAsyncRetryPolicy
Oluşturucu
AsyncRetryPolicy(**kwargs: Any)
Yalnızca Anahtar Sözcük Parametreleri
Name | Description |
---|---|
retry_total
|
İzin vermek için toplam yeniden deneme sayısı. Diğer sayılardan önceliklidir. Varsayılan değer 10'dur. |
retry_connect
|
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
|
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
|
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). Yeniden deneme ilkesi şu süre boyunca uyku moduna alacak: {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
|
İzin süresi üst sınırı. Varsayılan değer 120 saniyedir (2 dakika). |
Örnekler
Zaman uyumsuz yeniden deneme ilkesi yapılandırma.
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"],
)
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ış:
|
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 |
İsteği işlem hattındaki bir sonraki ilkeye göndermek için yapılandırılan yeniden deneme ilkesini kullanır. |
sleep |
Yeniden deneme girişimleri arasında uyku. Bu yöntem sunucunun yanıt üst bilgisine |
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
|
Retry-After üst bilgisi |
Döndürülenler
Tür | Description |
---|---|
saniye olarak Retry-After değeri. |
send
İsteği işlem hattındaki bir sonraki ilkeye göndermek için yapılandırılan yeniden deneme ilkesini kullanır.
async send(request: PipelineRequest[HTTPRequestType]) -> PipelineResponse[HTTPRequestType, AsyncHTTPResponseType]
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. |
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.
async sleep(settings: Dict[str, Any], transport: AsyncHttpTransport[HTTPRequestType, AsyncHTTPResponseType], response: PipelineResponse[HTTPRequestType, AsyncHTTPResponseType] | 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: AsyncHTTPPolicy[HTTPRequestType, AsyncHTTPResponseType]
Azure SDK for Python