Rate Limit (הגבלת קצב) הוא מספר הבקשות המרבי ששירות מקבל מלקוח אחד בפרק זמן קבוע, למשל בדקה. בקשה שעוברת את התקרה לא מבוצעת, והשרת עונה בשגיאה עד שהחלון הבא נפתח.
למה יש הגבלה כזו
שרת שמשרת לקוחות רבים צריך להבטיח שלקוח אחד, או באג אחד בלולאה, לא יתפוס את כל המשאבים. ההגבלה שומרת על זמני תגובה יציבים לכולם, וגם עוצרת קוד שנתקע בלולאה לפני שהוא מוציא כסף על הודעות.
מה עושים כשנתקלים בה
- תשובת HTTP 429 (Too Many Requests) היא הסימן המקובל לחריגה.
- הכותרת
Retry-Afterאומרת כמה שניות לחכות. מחכים לפחות את הזמן הזה, ורק אז מנסים שוב. - ניסיון חוזר מיידי וברצף רק מאריך את הבעיה. כשאין
Retry-After, מגדילים את ההמתנה בין ניסיון לניסיון. - במקום לשאול את השרת שוב ושוב מה מצב ההודעה, עדיף לקבל את העדכון ב-webhook ולחסוך בקשות.
איך זה נראה ב-Sendy
ה-API של Sendy מקבל עד 60 בקשות לדקה לכל טוקן. כל תשובה מחזירה כותרות X-RateLimit-* עם התקרה, מה שנשאר בחלון והזמן לאיפוס, וחריגה מחזירה 429 עם הקוד RATE_LIMITED ועם Retry-After. מסך המפתחים מציג את השימוש מול התקרה. לשליחה לרשימה גדולה, קמפיין מהמסך מתאים יותר מלולאה של קריאות API.