מגבלות קצב
כל מסלול קובע קצב בבקשות לדקה: 20, 40 או 120. amodb סופר בקשות בחלון נע של 60 שניות. כל תגובה נושאת את X-RateLimit-Limit, את X-RateLimit-Remaining ואת X-RateLimit-Reset. מעבר למגבלה מקבלים HTTP 429 עם status_code 25 וכותרת Retry-After בשניות. גם תגובות מהמטמון נספרות.
מגבלות לפי מסלול
| בקשות לדקה | בקשות ביום בקצב מלא |
|---|---|
| 20 | 28,800 |
| 40 | 57,600 |
| 120 | 172,800 |
כל מסלול כולל את אותן נקודות קצה ואת אותם נתונים. ראו תמחור לשמות המסלולים ולמחירים.
איך החלון עובד
amodb סופר את הבקשות של כל מפתח ב-60 השניות האחרונות. החלון נע: בקשה שנשלחה ב-12:00:30 מפסיקה להיספר ב-12:01:30. אין איפוס בתחילת הדקה, ולכן קצב יציב עובד טוב יותר מפרצי בקשות.
בדיקת המפתח ומגבלת הקצב רצות לפני מטמון הקצה. תגובה שמוגשת מהמטמון עדיין נספרת כבקשה אחת.
כותרות תגובה
כל קריאה שנעשית עם מפתח מחזירה את הכותרות האלה:
| כותרת | משמעות |
|---|---|
X-RateLimit-Limit | מספר הבקשות המותר ל-60 שניות עבור המפתח הזה. |
X-RateLimit-Remaining | מספר הבקשות שנשארו בחלון הנוכחי. |
X-RateLimit-Reset | שניות עד שהבקשה הישנה ביותר שנספרה יוצאת מהחלון. |
Retry-After | ב-429 בלבד: שניות להמתנה לפני הקריאה הבאה. |
כשמגיעים למגבלה
התגובה היא HTTP 429 עם גוף השגיאה של TMDB:
{
"success": false,
"status_code": 25,
"status_message": "Your request count (41) is over the allowed limit of (40)."
}המתינו Retry-After שניות ואז נסו שוב. אל תנסו שוב בלולאה צפופה.
async function amodb(path) {
for (let attempt = 0; attempt < 3; attempt++) {
const res = await fetch(`https://api.amodb.dev${path}`, {
headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` },
});
if (res.status !== 429) return res.json();
const wait = Number(res.headers.get("Retry-After") ?? 1);
await new Promise((r) => setTimeout(r, wait * 1000));
}
throw new Error("amodb: still rate limited after 3 attempts");
}import os
import time
import requests
def amodb(path):
for _ in range(3):
res = requests.get(
f"https://api.amodb.dev{path}",
headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
timeout=10,
)
if res.status_code != 429:
return res.json()
time.sleep(int(res.headers.get("Retry-After", "1")))
raise RuntimeError("amodb: still rate limited after 3 attempts")איך להישאר מתחת למגבלה
- שמרו תגובות במטמון אצלכם. פרטים משתנים לעתים רחוקות; 6 שעות הן ברירת מחדל בטוחה.
- השתמשו ב-
append_to_responseכדי לקבל פרטים, קרדיטים ותמונות בבקשה אחת במקום בשלוש. - פזרו עבודות אצווה: ב-40 בקשות לדקה, שלחו בקשה אחת כל 1.5 שניות.
- קראו את
X-RateLimit-Remainingוהאטו לפני שהוא מגיע ל-0.