AsyncRetryPolicy الفصل

نكهة غير متزامنة لنهج إعادة المحاولة.

يمكن تكوين نهج إعادة المحاولة غير المتزامنة في البنية الأساسية لبرنامج ربط العمليات التجارية مباشرة، أو تعديلها على أساس كل استدعاء.

توريث
azure.core.pipeline.policies._retry.RetryPolicyBase
AsyncRetryPolicy
azure.core.pipeline.policies._base_async.AsyncHTTPPolicy
AsyncRetryPolicy

الدالمنشئ

AsyncRetryPolicy(**kwargs: Any)

معلمات الكلمة الأساسية فقط

الاسم الوصف
retry_total
int

إجمالي عدد عمليات إعادة المحاولة التي يجب السماح بها. له الأسبقية على عدد آخر. القيمة الافتراضية هي 10.

retry_connect
int

عدد الأخطاء المتعلقة بالاتصال لإعادة المحاولة. هذه هي الأخطاء التي تظهر قبل إرسال الطلب إلى الخادم البعيد، والذي نفترض أنه لم يشغل الخادم لمعالجة الطلب. القيمة الافتراضية هي: 3.

retry_read
int

كم مرة لإعادة المحاولة على أخطاء القراءة. يتم رفع هذه الأخطاء بعد إرسال الطلب إلى الخادم، لذلك قد يكون للطلب آثار جانبية. القيمة الافتراضية هي: 3.

retry_status
int

كم مرة لإعادة المحاولة على رموز الحالة السيئة. القيمة الافتراضية هي: 3.

retry_backoff_factor

عامل تراجع لتطبيقه بين المحاولات بعد المحاولة الثانية (يتم حل معظم الأخطاء على الفور عن طريق محاولة ثانية دون تأخير). سيتم وضع نهج إعادة المحاولة في وضع السكون ل: {عامل التراجع} * (2 ** ({عدد إجمالي عمليات إعادة المحاولة} - 1)) ثانية. إذا كان backoff_factor هو 0.1، فستنام إعادة المحاولة ل [0.0s، 0.2s، 0.4s، ...] بين عمليات إعادة المحاولة. القيمة الافتراضية هي 0.8.

retry_backoff_max
int

الحد الأقصى لوقت التراجع. القيمة الافتراضية هي 120 ثانية (دقيقتان).

أمثلة

تكوين نهج إعادة محاولة غير متزامن.


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

الأساليب

configure_retries

تكوين إعدادات إعادة المحاولة.

get_backoff_time

إرجاع وقت التراجع الحالي.

get_retry_after

احصل على قيمة Retry-After بالثوان.

increment

زيادة عدادات إعادة المحاولة.

is_exhausted

التحقق من ترك أي عمليات إعادة محاولة.

is_retry

التحقق من أن التعليمة البرمجية للأسلوب/الحالة قابلة لإعادة المحاولة.

استنادا إلى قوائم السماح ومتغيرات التحكم مثل عدد إجمالي عمليات إعادة المحاولة للسماح بها، وما إذا كان يجب احترام عنوان Retry-After، وما إذا كان هذا العنوان موجودا، وما إذا كان رمز الحالة الذي تم إرجاعه موجودا في قائمة رموز الحالة التي ستتم إعادة المحاولة عليها عند وجود العنوان المذكور أعلاه.

السلوك هو:

  •   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

تعطيل عمليات إعادة المحاولة.

parse_retry_after

مساعد لتحليل Retry-After والحصول على القيمة في ثوان.

send

يستخدم نهج إعادة المحاولة المكون لإرسال الطلب إلى النهج التالي في البنية الأساسية لبرنامج ربط العمليات التجارية.

sleep

السكون بين محاولات إعادة المحاولة.

سيحترم هذا الأسلوب عنوان استجابة الخادم Retry-After وسينام مدة الوقت المطلوب. إذا لم يكن ذلك موجودا، فسيستخدم تراجعا أسيا. بشكل افتراضي، عامل التراجع هو 0 وسيعود هذا الأسلوب على الفور.

update_context

التحديثات محفوظات إعادة المحاولة في سياق البنية الأساسية لبرنامج ربط العمليات التجارية.

configure_retries

تكوين إعدادات إعادة المحاولة.

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

المعلمات

الاسم الوصف
options
مطلوب

وسيطات الكلمة الأساسية من السياق.

المرتجعات

النوع الوصف

إملاء يحتوي على إعدادات ومحفوظات لإعادة المحاولة.

get_backoff_time

إرجاع وقت التراجع الحالي.

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

المعلمات

الاسم الوصف
settings
مطلوب

إعدادات إعادة المحاولة.

المرتجعات

النوع الوصف

قيمة التراجع الحالية.

get_retry_after

احصل على قيمة Retry-After بالثوان.

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

المعلمات

الاسم الوصف
response
مطلوب

عنصر PipelineResponse

المرتجعات

النوع الوصف

قيمة Retry-After بالثوان.

increment

زيادة عدادات إعادة المحاولة.

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

المعلمات

الاسم الوصف
settings
مطلوب

إعدادات إعادة المحاولة.

response

كائن استجابة البنية الأساسية لبرنامج ربط العمليات التجارية.

القيمة الافتراضية: None
error

حدث خطأ أثناء الطلب، أو لا شيء إذا تم تلقي الاستجابة بنجاح.

القيمة الافتراضية: None

المرتجعات

النوع الوصف

ما إذا كانت أي محاولة إعادة محاولة متوفرة True إذا توفرت المزيد من محاولات إعادة المحاولة، خطأ بخلاف ذلك

is_exhausted

التحقق من ترك أي عمليات إعادة محاولة.

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

المعلمات

الاسم الوصف
settings
مطلوب

إعدادات إعادة المحاولة

المرتجعات

النوع الوصف

خطأ إذا كان لديك المزيد من عمليات إعادة المحاولة. صحيح إذا تم استنفاد إعادة المحاولة.

is_retry

التحقق من أن التعليمة البرمجية للأسلوب/الحالة قابلة لإعادة المحاولة.

استنادا إلى قوائم السماح ومتغيرات التحكم مثل عدد إجمالي عمليات إعادة المحاولة للسماح بها، وما إذا كان يجب احترام عنوان Retry-After، وما إذا كان هذا العنوان موجودا، وما إذا كان رمز الحالة الذي تم إرجاعه موجودا في قائمة رموز الحالة التي ستتم إعادة المحاولة عليها عند وجود العنوان المذكور أعلاه.

السلوك هو:

  •   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

المعلمات

الاسم الوصف
settings
مطلوب

إعدادات إعادة المحاولة.

response
مطلوب

عنصر PipelineResponse

المرتجعات

النوع الوصف

صحيح إذا كانت التعليمة البرمجية للأسلوب/الحالة قابلة لإعادة المحاولة. خطأ إذا لم يكن قابلا لإعادة المحاولة.

no_retries

تعطيل عمليات إعادة المحاولة.

no_retries() -> ClsRetryPolicy

المرتجعات

النوع الوصف

نهج إعادة المحاولة مع تعطيل عمليات إعادة المحاولة.

parse_retry_after

مساعد لتحليل Retry-After والحصول على القيمة في ثوان.

parse_retry_after(retry_after: str) -> float

المعلمات

الاسم الوصف
retry_after
مطلوب
str

رأس Retry-After

المرتجعات

النوع الوصف

قيمة Retry-After بالثوان.

send

يستخدم نهج إعادة المحاولة المكون لإرسال الطلب إلى النهج التالي في البنية الأساسية لبرنامج ربط العمليات التجارية.

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

المعلمات

الاسم الوصف
request
مطلوب

كائن PipelineRequest

المرتجعات

النوع الوصف

إرجاع PipelineResponse أو ظهور الخطأ إذا تم تجاوز الحد الأقصى لإعادة المحاولة.

sleep

السكون بين محاولات إعادة المحاولة.

سيحترم هذا الأسلوب عنوان استجابة الخادم Retry-After وسينام مدة الوقت المطلوب. إذا لم يكن ذلك موجودا، فسيستخدم تراجعا أسيا. بشكل افتراضي، عامل التراجع هو 0 وسيعود هذا الأسلوب على الفور.

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

المعلمات

الاسم الوصف
settings
مطلوب

إعدادات إعادة المحاولة.

transport
مطلوب

نوع نقل HTTP.

response

عنصر PipelineResponse.

القيمة الافتراضية: None

update_context

التحديثات محفوظات إعادة المحاولة في سياق البنية الأساسية لبرنامج ربط العمليات التجارية.

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

المعلمات

الاسم الوصف
context
مطلوب

سياق البنية الأساسية لبرنامج ربط العمليات التجارية.

retry_settings
مطلوب

إعدادات إعادة المحاولة.

السمات

BACKOFF_MAX

الحد الأقصى لوقت التراجع.

BACKOFF_MAX = 120

next

مؤشر إلى النهج التالي أو النقل (ملتف كنهج). سيتم تعيين عند إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية.

next: AsyncHTTPPolicy[HTTPRequestType, AsyncHTTPResponseType]