Rate limit چیست؟
Rate limit سقف تعداد درخواستهایی است که یک کلید API در یک بازهٔ زمانی میتواند بفرستد. درخواست بیش از سقف، پاسخ 429 میگیرد.
در API روشا: 429 rate_limited
هر API برای اینکه بار یک مشتری سرویس بقیه را کند نکند، تعداد درخواستها را محدود میکند. وقتی از سقف بگذرید، سرور بهجای داده، وضعیت HTTP 429 (Too Many Requests) برمیگرداند. برنامهٔ درست، این پاسخ را خطای دائمی حساب نمیکند: صبر میکند و دوباره میفرستد.
روشا دو سقف دارد
| سقف | بازه | کد خطا | Retry-After |
|---|---|---|---|
| دقیقهای | دقیقهٔ تقویمی؛ در ثانیهٔ صفر هر دقیقه صفر میشود | rate_limited |
ثانیههای مانده تا دقیقهٔ بعد |
| روزانه | روز تقویمی؛ در نیمهشب تهران صفر میشود | quota_exceeded |
3600 |
هر دو سقف برای هر کلید جدا شمرده میشوند و مقدار آنها را پلن شما تعیین میکند. پلن رایگان تا آبان ۱۴۰۵، ۳۰ درخواست در دقیقه و ۱٬۰۰۰ درخواست در روز دارد. سقف بقیهٔ پلنها در قیمتها است.
بدنهٔ پاسخ 429 این شکل را دارد:
{"detail": "...", "code": "rate_limited"}چه چیزهایی شمرده میشود؟
- هر درخواست به
/v1/یک واحد است، با هر تعداد ردیف در پاسخ. - هر درخواست HTTP به
/mcpیک واحد است. یک گفتوگو با دستیار چند درخواست میفرستد. - درخواستهای ردشده (مثل 401، 403 و 429) هم در آمار مصرف شما دیده میشوند.
- هزینهٔ اضافهای برای گذشتن از سقف حساب نمیشود.
چطور در کد با آن کنار بیایم؟
سرآیند Retry-After را بخوانید، همانقدر صبر کنید و درخواست را یک بار دیگر بفرستید. تابع آمادهٔ این کار در مستندات پایتون و مستندات جاوااسکریپت است.
برای quota_exceeded صبر کوتاه فایده ندارد؛ تا نیمهشب تهران صبر کنید یا پلن را ارتقا بدهید.
برای مصرف کمتر، limit را تا ۵۰۰۰ بالا ببرید و داده را ذخیره کنید؛ روش آن در همگامسازی روزانه است. مصرف هر کلید را در پنل ببینید. مرجع کامل در محدودیتها و خطاها است.
نامهای دیگر: محدودیت نرخ درخواست، سقف درخواست، ریت لیمیت، سهمیهٔ روزانه، rate limiting، 429، quota