OpenAI rate_limit_exceeded: معناه وسببه وحله

الـ 429 الصحّي. تجاوز تدفقك مستواك لدقيقة، والدقيقة هي بالضبط مدّة المشكلة إذا تعاملت معها بصواب.

بقلم فريق benchr · · متحقَّق منه مقابل توثيق الأخطاء من OpenAI، 12 يونيو 2026

OpenAIHTTP 429الخطورة: متوسطةحد الاستخدام

RPM وTPM، وأيّهما أمسك بك

يفرض OpenAI عدّادين في آن: الطلبات في الدقيقة والتوكنز في الدقيقة. تراقب الفرق الأول فيباغتها الثاني. خط أنابيب يدفع مستندات طويلة قد يطلق TPM بحفنة استدعاءات، بينما روبوت دردشة بموجّهات صغيرة يطلق RPM قبل أن يتحرك TPM بكثير. انظر ما الذي فشل: دفعات من استدعاءات صغيرة تشير إلى RPM، وبضعة استدعاءات ثقيلة تشير إلى TPM، والحلول تتباين: مباعدة الاستدعاءات مقابل تقليم الموجّهات وتحديد max_tokens.

سبب آخر يختبئ في وضح النهار: مفتاح API واحد مشترك عبر خدمات. كل خدمة محجَّمة بعقل؛ لكن المجموع ليس كذلك.

الخطأ الذي سيظهر لك

{
  "error": {
    "message": "Rate limit reached for requests",
    "type": "rate_limit_exceeded",
    "code": "rate_limit_exceeded"
  }
}

لا تخلطه بتوأمه الشرير: insufficient_quota يُرجع 429 أيضاً، لكن لا انتظار يصلح الفوترة. تفرّع على جسم الخطأ، دائماً.

تراجع يحسن التصرف

# Python — exponential backoff with full jitter
import random, time
from openai import OpenAI, RateLimitError

client = OpenAI()

def create_with_backoff(max_retries=6, **kwargs):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(**kwargs)
        except RateLimitError as e:
            if "insufficient_quota" in str(e):
                raise                       # billing — waiting won't help
            wait = min(60, 2 ** attempt) * random.random()
            time.sleep(wait)                # jitter prevents retry stampedes
    raise RuntimeError("still rate-limited after retries")

التشويش أهم من الأُس. حين يعيد كل عامل المحاولة على الجدول نفسه، يتزامن أسطولك في موجات تعيد إطلاق الحد. عشوَأة الانتظار تفكّك هذا التشكيل.

القريب 503: "Slow Down"

صعّد التدفق بحدّة مفرطة فيجيبك OpenAI بخانق 503 بدل 429. التعافي الموثَّق محدد: ارجع إلى معدّل طلبك السابق وثبّته 15 دقيقة على الأقل قبل أن تصعد ثانيةً، تدريجياً. عامل الإطلاقات كإحماء، لا كطلقة بدء.

حين تكون أخطاء 429 مزمنة لا عرَضية

التراجع للذُّرى. إذا كنت مكبَّلاً بالحد كل ساعة، فلديك مشكلة تحجيم، ولها ثلاثة مخارج صادقة: انعِم الحِمل (طابور + تخزين مؤقت للموجّهات المتكررة)، أو قسّمه (مشاريع منفصلة لأحمال منفصلة)، أو انقل التدفق الضخم إلى مستوى ذي متّسع. يكلّف GPT-5 Mini ثُمن GPT-5 لكل توكن إدخال، وGemini 3.5 Flash بُني بالضبط لتدفق الوكلاء المتوازي الذي يلتهم حدود الاستخدام. الترتيب والحاسبة يحوّلان إعادة التوجيه إلى قرار من عشر دقائق.

أسئلة شائعة

كم يستغرق إعادة ضبط الحد؟

كل دقيقة، بحسب توثيق OpenAI. إذا انخفض حجمك، يمر الطلب الفاشل عادةً خلال 60 ثانية — ولهذا يعمل التراجع البادئ عند ثانية تقريباً.

RPM مقابل TPM — أيّهما بلغت؟

دفعات من استدعاءات صغيرة = RPM. بضعة استدعاءات ثقيلة طويلة الموجّه = TPM. يبدو الخطأ متطابقاً؛ شكل تدفقك يخبرك أي عدّاد انطلق.

ما خطأ 503 "Slow Down"؟

خانق OpenAI ضد التصعيد المفاجئ. اخفض إلى معدّلك السابق، وثبّته 15 دقيقة، ثم زِد تدريجياً. هذا التعافي الموثَّق، لا فلكلور.

سجل التغييرات

  • — نُشر. تم التحقق من سلوك إعادة الضبط وشكل الخطأ وقاعدة تعافي 503 مقابل دليل أكواد أخطاء OpenAI.

المصادر

  • OpenAI error codes guide — developers.openai.com/api/docs/guides/error-codes (تم التحقق في 12 يونيو 2026)
  • benchr api-errors.json — المُدخَل المهيكل لهذا الخطأ