الأخطاء وحدود المعدّل والموثوقية
تتحدّث شيفرة الإنتاج إلى خدمة شبكية، لذا يجب أن تتوقّع الإخفاق. قليل من البنية هنا هو الفارق بين تكامل هشّ وآخر يُعتمد عليه.
خريطة الأخطاء
حالات HTTP النموذجية التي ستتعامل معها:
| الحالة | المعنى | ما العمل |
|---|---|---|
| 400 | طلب غير صالح | أصلح الحمولة؛ لا تُعد المحاولة كما هي |
| 401 | مفتاح API خاطئ/مفقود | تحقّق من بيانات الاعتماد |
| 403 | غير مسموح به | تحقّق من الوصول/الصلاحيات |
| 429 | تجاوز حدّ المعدّل | تراجع وأعِد المحاولة (احترم retry-after) |
| 500/529 | خطأ في الخادم / تحميل زائد | أعِد المحاولة مع التراجع التدريجي |
تُظهر حِزَم SDK هذه الأخطاء كـ استثناءات مُصنَّفة بأنواع، لتتفرّع بوضوح بدلًا من تحليل السلاسل النصية.
إعادة المحاولة مع التراجع التدريجي
للأخطاء العابرة (429، 5xx)، أعِد المحاولة مع تراجع أُسّي + اضطراب عشوائي (jitter)، مع وضع حدّ أقصى:
import time, random
for attempt in range(5):
try:
return client.messages.create(...)
except (RateLimitError, APIStatusError) as e:
if attempt == 4 or not should_retry(e):
raise
time.sleep(min(2 ** attempt + random.random(), 30))
(كثير من حِزَم SDK تعيد المحاولة على الأخطاء العابرة تلقائيًا — اعرف الإعداد الافتراضي لعميلك قبل إضافة منطقك الخاص.)
حدود المعدّل
تُطبَّق الحدود لكل حساب/طبقة (الطلبات والرموز في الدقيقة). عند بلوغ حدٍّ تحصل على 429 مع تلميحات توقيت. الاستراتيجيات: احترم retry-after، ونعّم الدفعات المفاجئة، وجمّع العمل غير المتزامن في حزم، واستخدم نموذجًا أرخص (اختيار نموذج) للخطوات عالية الحجم.
ترحيل النماذج
معرّفات النماذج مؤرّخة/مُصدَّرة وتُهجَر مع الوقت. اعزل نفسك:
- اقرأ معرّف النموذج من الإعدادات، لا من قيم حرفية متناثرة.
- راقب عمليات الإهمال — راجع مراقبة الإهمال والترحيل وجدول النماذج.
- أعِد تشغيل تقييماتك عند تبديل النماذج.