RetryPolicy الفصل
نهج إعادة المحاولة.
يمكن تكوين نهج إعادة المحاولة في البنية الأساسية لبرنامج ربط العمليات التجارية مباشرة، أو تعديلها على أساس كل استدعاء.
- توريث
-
azure.core.pipeline.policies._retry.RetryPolicyBaseRetryPolicyazure.core.pipeline.policies._base.HTTPPolicyRetryPolicy
الدالمنشئ
RetryPolicy(**kwargs: Any)
معلمات الكلمة الأساسية فقط
الاسم | الوصف |
---|---|
retry_total
|
إجمالي عدد مرات إعادة المحاولة للسماح بها. له الأسبقية على عدد آخر. القيمة الافتراضية هي 10. |
retry_connect
|
عدد الأخطاء المتعلقة بالاتصال التي يجب إعادة المحاولة عليها. هذه هي الأخطاء التي تظهر قبل إرسال الطلب إلى الخادم البعيد، والتي نفترض أنها لم تشغل الخادم لمعالجة الطلب. القيمة الافتراضية هي: 3. |
retry_read
|
كم مرة لإعادة المحاولة على أخطاء القراءة. يتم رفع هذه الأخطاء بعد إرسال الطلب إلى الخادم، لذلك قد يكون للطلب آثار جانبية. القيمة الافتراضية هي: 3. |
retry_status
|
كم مرة لإعادة المحاولة على رموز الحالة السيئة. القيمة الافتراضية هي: 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
|
الحد الأقصى لوقت التراجع. القيمة الافتراضية هي 120 ثانية (دقيقتان). |
retry_mode
|
التأخير الثابت أو الأسي بين attemps، الافتراضي أسي. |
timeout
|
إعداد المهلة للعملية بالثوان، الافتراضي هو 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، وما إذا كان هذا العنوان موجودا، وما إذا كان رمز الحالة الذي تم إرجاعه موجودا في قائمة رموز الحالة التي ستتم إعادة المحاولة عليها عند وجود العنوان المذكور أعلاه. السلوك هو:
|
no_retries |
تعطيل عمليات إعادة المحاولة. |
parse_retry_after |
المساعد لتحليل Retry-After والحصول على القيمة في ثوان. |
send |
يرسل عنصر PipelineRequest إلى النهج التالي. يستخدم إعدادات إعادة المحاولة إذا لزم الأمر. |
sleep |
السكون بين محاولات إعادة المحاولة. سيحترم هذا الأسلوب عنوان استجابة الخادم |
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
مطلوب
|
رأس 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]
Azure SDK for Python