ממשק Google Chat API הוא שירות משותף, ולכן אנחנו מטילים מכסות ומגבלות כדי לוודא שכל המשתמשים משתמשים בו בצורה הוגנת וכדי להגן על הביצועים הכוללים של Google Workspace.
אם תחרגו ממכסה, תקבלו תשובה עם קוד הסטטוס 429: Too many requests HTTP. יכול להיות שגם בדיקות נוספות של מגבלות קצב בשרת העורפי של Chat יגרמו לאותה שגיאת תגובה. אם השגיאה הזו מתרחשת, צריך להשתמש באלגוריתם של השהיה מעריכית לפני ניסיון חוזר ולנסות שוב מאוחר יותר. כל עוד אתם לא חורגים מהמכסות לדקה שמפורטות בטבלאות הבאות, אין הגבלה על מספר הבקשות שאתם יכולים לשלוח ביום.
יכול להיות שסוגים שונים של מכסות יחולו על שיטות של Chat API: מכסות לכל פרויקט, לכל מרחב ולכל משתמש.
מכסות לכל פרויקט
מכסות לכל פרויקט מגבילות את קצב השאילתות לפרויקט ב-Google Cloud, ולכן הן חלות על אפליקציית Chat יחידה שקוראת לשיטות ספציפיות של Chat API עבור כל מכסה.
בטבלה הבאה מפורטות מגבלות השאילתות לכל פרויקט. אפשר למצוא את המגבלות האלה גם בדף Quotas.
מכסה לכל פרויקט |
שיטות של Chat API |
מגבלה (לכל 60 שניות) |
|---|---|---|
כתיבת הודעות לדקה |
|
3000 |
מספר ההודעות שנקראו בדקה |
|
3000 |
כתיבות של חברים במועדון לדקה |
|
300 |
קריאות בדקה של חברים במועדון |
|
3000 |
כתיבות במרחב לדקה |
|
60 |
קריאת רווחים בדקה |
|
3000 |
כתיבות של קבצים מצורפים לדקה |
|
600 |
קריאת קבצים מצורפים בדקה |
|
3000 |
מספר פעולות כתיבה של תגובות באמוג'י לדקה |
|
600 |
קריאות של תגובות בדקה |
|
3000 |
כתיבות של סמלי אמוג'י מותאמים אישית בדקה |
|
600 |
מספר הקראות של סמלי אמוג'י מותאמים אישית בדקה |
|
3000 |
כתיבות לקטע בדקה |
|
600 |
קריאות של קטע בדקה |
|
3000 |
מכסות לכל מרחב
מכסות לכל מרחב מגבילות את קצב השאילתות במרחב נתון, והן משותפות לכל אפליקציות Chat שפועלות במרחב הזה ומבצעות קריאות לשיטות Chat API שמופיעות ברשימה של כל מכסה.
בטבלה הבאה מפורטות מכסות השאילתות לכל מרחב:
מכסה לכל מרחב |
שיטות של Chat API |
מגבלה (לשנייה) |
|---|---|---|
קריאות לשנייה |
|
15 |
פעולות כתיבה לשנייה |
|
1 |
יצירת תגובות בשנייה |
|
5 |
מספר הפעמים שההודעה נכתבת בשנייה בזמן ייבוא נתונים ל-Google Chat |
|
10 |
מכסות לכל משתמש
מכסות לכל משתמש מגבילות את קצב השאילתות של משתמש ב-Google Chat. השאילתות מתייחסות לכל אפליקציות Chat שקוראות לשיטה של Chat API בשם משתמש (באמצעות אימות משתמש).
בטבלה הבאה מפורטות מגבלות השאילתות לכל משתמש:
מכסה לכל משתמש |
שיטות של Chat API |
מגבלה (לשנייה) |
|---|---|---|
כתיבות של סמלי אמוג'י מותאמים אישית בשנייה |
|
1 |
קריאות של סמלי אמוג'י בהתאמה אישית לשנייה |
|
15 |
כתיבות של קטע בשנייה |
|
1 |
קריאות של קטע בשנייה |
|
15 |
מגבלות שימוש נוספות
תנועה גבוהה של בקשות ל-API שמטרגטת את אותו מרחב יכולה להפעיל מגבלות פנימיות נוספות שלא מוצגות בדף Quotas.
פתרון שגיאות שקשורות למכסת זמן
לגבי כל השגיאות שמבוססות על זמן (מקסימום N בקשות לכל X דקות), מומלץ שהקוד יזהה את החריג וישתמש בהשהיה מעריכית קטומה לפני ניסיון חוזר כדי לוודא שהמכשירים לא יוצרים עומס מוגזם.
השהיה מעריכית לפני ניסיון חוזר היא אסטרטגיה סטנדרטית לטיפול בשגיאות באפליקציות רשת. אלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) מבצע ניסיון חוזר של בקשות באמצעות הגדלה אקספוננציאלית של זמני ההמתנה בין הבקשות, עד למשך ההשהיה המקסימלי. אם הבקשות עדיין לא מצליחות, חשוב שההשהיות בין הבקשות יגדלו עם הזמן עד שהבקשה תצליח.
אלגוריתם לדוגמה
אלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) מבצע ניסיון חוזר של בקשות באופן אקספוננציאלי, ומגדיל את זמן ההמתנה בין הניסיונות החוזרים עד למשך ההשהיה המקסימלי. לדוגמה:
- שולחים בקשה ל-Google Chat API.
- אם הבקשה נכשלת, צריך להמתין 1 +
random_number_milliseconds שניות ולנסות שוב את הבקשה. - אם הבקשה נכשלת, צריך להמתין 2 +
random_number_milliseconds שניות ולנסות שוב את הבקשה. - אם הבקשה נכשלת, צריך להמתין 4 +
random_number_milliseconds שניות ולנסות שוב את הבקשה. - וכך הלאה, עד
maximum_backoffפעמים. - ממשיכים להמתין ולנסות שוב עד שמגיעים למספר מקסימלי של ניסיונות חוזרים, אבל לא מגדילים את תקופת ההמתנה בין הניסיונות החוזרים.
where:
- זמן ההמתנה הוא
min(((2^n)+random_number_milliseconds), maximum_backoff), שבוnגדל ב-1 בכל איטרציה (בקשה). -
random_number_millisecondsהוא מספר אקראי של אלפיות השנייה שקטן מ-1,000 או שווה לו. כך נמנעים ממקרים שבהם הרבה לקוחות מסונכרנים בגלל מצב מסוים וכולם מנסים שוב בו-זמנית, ושולחים בקשות בגל מסונכרן. הערך שלrandom_number_millisecondsמחושב מחדש אחרי כל בקשה לניסיון חוזר. - בדרך כלל, משך הזמן של
maximum_backoffהוא 32 או 64 שניות. הערך המתאים תלוי בתרחיש לדוגמה.
הלקוח יכול להמשיך לנסות שוב אחרי שהגיע לזמן maximum_backoff.
ניסיונות חוזרים אחרי השלב הזה לא צריכים להמשיך להגדיל את זמן ההשהיה. לדוגמה, אם לקוח משתמש בזמן maximum_backoff של 64 שניות, אחרי שהלקוח מגיע לערך הזה הוא יכול לנסות שוב כל 64 שניות. בשלב מסוים, צריך למנוע מהלקוחות לנסות שוב ללא הגבלת זמן.
זמן ההמתנה בין ניסיונות חוזרים ומספר הניסיונות החוזרים תלויים בתרחיש לדוגמה ובתנאי הרשת.
בקשה להגדלת מכסה לפרויקט
יכול להיות שתרצו לבקש שינוי במכסות בהתאם לשימוש במשאבים בפרויקט. קריאות ל-API על ידי חשבון שירות נחשבות לשימוש בחשבון יחיד. הגשת בקשה להתאמת המכסה לא מבטיחה שהבקשה תאושר. יכול להיות שיעבור יותר זמן עד שנאשר בקשות להתאמת מכסות שיובילו להגדלה משמעותית של ערך המכסה.
המכסות לא זהות בכל הפרויקטים. ככל שהשימוש שלכם ב-Google Cloud יגדל עם הזמן, יכול להיות שתצטרכו להגדיל את ערכי המכסות. אם אתם צופים עלייה משמעותית בשימוש בקרוב, תוכלו לבקש התאמות במכסות מראש בדף Quotas במסוף Google Cloud.
מידע נוסף זמין במקורות המידע הבאים: