ماذا يقول لك الخطأ 529
كل رمز حالة آخر في جدول Anthropic يشير إلى شيء تتحكم فيه أنت: 401 يعني مفتاحاً خاطئاً، و400 يعني جسم طلب مشوّهاً، و429 يعني أن حسابك بلغ حداً. أما 529 فمختلف: يظهر حين ترتفع الحركة على كل المستخدمين في وقت واحد، ولذلك يخص الجميع لا حسابك وحده. والرسالة حرفية: "The API is temporarily overloaded." يكثر هذا صباح الإطلاق؛ ينزل نموذج جديد، فيجرّبه عدد هائل من المستخدمين، فتخفف المنصة الحمل حتى تبقى متاحة.
فرّق بين 529 و429. تحذّر وثائق Anthropic من أن الزيادة الحادة في استخدام حسابك قد تطلق أخطاء 429 حتى إذا لم تبلغ الحد المعلن. فإذا ظهر الخطأ أثناء رفع حركة تطبيقك، افحص حقل النوع: إن كان rate_limit_error، فراجع دليل الخطأ 429 وارفع المعدل تدريجياً.
جسم الرد
{
"type": "error",
"error": {
"type": "overloaded_error",
"message": "The API is temporarily overloaded."
},
"request_id": "req_011CSHoEeqs5C35K2UUqR7Fy"
}
ثلاث عادات تستحق أن تربطها في كودك وأنت هنا. فرّع بناءً على حقل type، وفي كود الـ SDK التقط أصناف الاستثناء المعنونة (بايثون يرفع أشياء مثل anthropic.RateLimitError) بدل مطابقة نص الرسائل. احفظ request_id، وهو يصل أيضاً في كل رد كترويسة مسبوقة بـ req_؛ وتذاكر الدعم التي تتضمنه تُحَل أسرع. وإن كنت تستخدم البث، فتذكّر أنه مع الأحداث المُرسَلة من الخادم قد يصل خطأ بعد وصول رمز 200، فسطر حالة نظيف ليس نهاية القصة.
أعد المحاولة على فترات متدرجة
اضبط إعادة المحاولة بفترات متزايدة مع تفاوت عشوائي، كي لا تعيد جميع العمليات الإرسال في اللحظة نفسها. وضع مهلة زمنية إجمالية، وأوقف الاستدعاءات مؤقتاً عند تجاوزها بدلاً من الاستمرار بلا نهاية.
# Python: إعادة محاولة متشتتة تحت مهلة، ثم قطع الدائرة
import random, time
import anthropic
client = anthropic.Anthropic()
def create_with_deadline(deadline_s=120, **kwargs):
start = time.monotonic()
attempt = 0
while time.monotonic() - start < deadline_s:
try:
return client.messages.create(**kwargs)
except anthropic.APIStatusError as e:
if e.status_code not in (429, 529):
raise
attempt += 1
time.sleep(min(30, 2 ** attempt) * random.random())
raise RuntimeError("circuit open: still overloaded at deadline")
حين تنفتح الدائرة، توقف عن الاستدعاء. اركن العمل الجديد في طابور، وقدّم النتائج المخزّنة حيث توجد، ولا تجسّ النبض مجدداً إلا بعد فترة تهدئة. عواصف إعادة المحاولة هي الطريقة الوحيدة التي تستطيع بها أن تجعل 529 أسوأ: آلاف العملاء يعيدون تشغيل الطلبات على مؤقّتات متزامنة يحوّلون موجة حركة إلى ظهيرة طويلة.
استعد لفترات الضغط
ضع طابوراً وحداً للتزامن بين منتجك وواجهة API، كي لا تتحول زيادة الطلب إلى موجة استدعاءات جديدة. انقل المهام التي تحتمل الانتظار إلى Batch API، الذي يعمل بخصم 50% على تسعير Claude القياسي. وإذا كان توفر الخدمة مهماً تعاقدياً، فاختبر مزوّداً بديلاً مسبقاً، وقارن تكلفته عبر الحاسبة، واجعل التحويل إليه خياراً واضحاً في الإعدادات.