RetryPolicy الفصل

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

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

توريث
azure.core.pipeline.policies._retry.RetryPolicyBase
RetryPolicy
azure.core.pipeline.policies._base.HTTPPolicy
RetryPolicy

الدالمنشئ

RetryPolicy(**kwargs: Any)

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

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

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

retry_connect
int

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

retry_read
int

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

retry_status
int

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

retry_backoff_factor

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

retry_backoff_max
int

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

retry_mode

التأخير الثابت أو الأسي بين attemps، الافتراضي أسي.

timeout
int

إعداد المهلة للعملية بالثوان، الافتراضي هو 604800s (7 أيام).

أمثلة

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


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

الأساليب

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

يرسل عنصر PipelineRequest إلى النهج التالي. يستخدم إعدادات إعادة المحاولة إذا لزم الأمر.

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

يرسل عنصر PipelineRequest إلى النهج التالي. يستخدم إعدادات إعادة المحاولة إذا لزم الأمر.

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

المعلمات

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

كائن PipelineRequest

المرتجعات

النوع الوصف

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

استثناءات

النوع الوصف
azure.core.exceptions.AzureError if maximum retries exceeded.
azure.core.exceptions.ClientAuthenticationError if authentication

sleep

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

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

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