Google Chat API הוא שירות משותף, לכן אנחנו מחילים מכסות והגבלות כדי לוודא שכל המשתמשים משתמשים בו בצורה הוגנת וכדי להגן על הביצועים הכוללים של Google Workspace.
אם תחרגו ממכסה, תקבלו תשובה עם קוד הסטטוס 429: Too many requests
HTTP. בדיקות נוספות של מגבלת הקצב בקצה העורפי של Chat עשויות גם הן לגרום לאותה תגובת שגיאה. אם השגיאה הזו מתרחשת, צריך להשתמש באלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) ולנסות שוב מאוחר יותר. כל עוד לא חורגים במכסות לדקה שמפורטות בטבלאות הבאות, אין הגבלה על מספר הבקשות שאפשר לשלוח ביום.
יש שני סוגים של מכסות שחלות על שיטות Chat API: מכסות לכל מרחב משותף ומכסות לכל פרויקט.
מכסות לכל מרחב משותף
המכסות לפי מרחב מגבילות את קצב השאילתות במרחב נתון ומשותפות בין כל האפליקציות ל-Chat שפועלות במרחב המשותף הזה, והן קוראות ל-methods של Chat API שמופיעות בכל מכסה.
בטבלה הבאה מפורטות המגבלות על שאילתות לכל מרחבים משותפים:
מכסה לכל מרחב משותף |
שיטות של Chat API |
מגבלה (ל-60 שניות, ישותף |
---|---|---|
קריאות בדקה |
|
900 |
כתיבה בדקה |
|
60 |
מכסות לכל פרויקט
המכסות לכל פרויקט מגבילות את קצב השאילתות בפרויקט ב-Google Cloud, ולכן הן חלות על אפליקציית Chat אחת ששולחת את ה-methods של Chat API לכל מכסה.
בטבלה הבאה מפורטות המגבלות הבאות של שאילתות לכל פרויקט. המגבלות האלה מופיעות גם בדף Quotas.
מכסה לכל פרויקט |
שיטות ב-Chat API |
מגבלה (לכל 60 שניות) |
---|---|---|
כתיבת הודעות בדקה |
|
3000 |
מספר הקריאות של הודעות בדקה |
|
3000 |
כתיבה בדקה |
|
300 |
מספר הקריאות בדקה של חברי מועדון |
|
3000 |
כתיבה במרחב בדקה |
|
60 |
רווח בדקה |
|
3000 |
כתיבת קבצים מצורפים בדקה |
|
600 |
מספר הקריאות של קבצים מצורפים בדקה |
|
3000 |
מספר הפעמים שנוספה תגובה לדקה |
|
600 |
מספר הפעמים שקריאת התגובה מתבצעת בדקה |
|
3000 |
מגבלות שימוש נוספות
יש מגבלות מכסה נוספות ליצירת מרחבים משותפים מסוג GROUP_CHAT
או SPACE
(באמצעות השיטה spaces.create
או השיטה spaces.setup
).
אפשר ליצור פחות מ-35 מרחבים משותפים מהסוגים האלה בדקה ו-800 מרחבים משותפים מהסוגים האלה בשעה. מרחבים מסוג DIRECT_MESSAGE
לא כפופים למגבלות המכסה הנוספות האלה.
תנועה גבוהה של API שמטרגטת את אותו מרחב יכולה להפעיל הגבלות פנימיות נוספות שלא מוצגות בדף Quotas.
פתרון שגיאות במכסות מבוססות-זמן
בכל השגיאות שמבוססות על זמן (עד N בקשות בכל X דקות), מומלץ לכתוב בקוד תפיסה של החריגה ולהשתמש בהשהיה מעריכית קטועה כדי לוודא שהמכשירים לא יוצרים עומס יתר.
השהיה מעריכית לפני ניסיון חוזר (exponential backoff) היא אסטרטגיה סטנדרטית לטיפול בשגיאות באפליקציות רשת. אלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) מבצע ניסיון חוזר של בקשות באמצעות הגדלה אקספוננציאלית של זמני ההמתנה בין הבקשות, עד למשך ההשהיה המקסימלי. אם הבקשות נכשלות, חשוב שהעיכוב בין הבקשות יתארך עם הזמן, עד שהבקשה תושלם.
דוגמה לאלגוריתם
אלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) מבצע ניסיונות חוזרים של בקשות באופן מעריכי, ומגדיל את זמן ההמתנה בין הניסיונות החוזרים עד למשך ההשהיה המקסימלי. לדוגמה:
- לשלוח בקשה ל-Google Chat API.
- אם הבקשה נכשלת, צריך להמתין 1 +
random_number_milliseconds
שניות ולנסות שוב את הבקשה. - אם הבקשה נכשלת, צריך להמתין 2 +
random_number_milliseconds
שניות ולנסות שוב את הבקשה. - אם הבקשה נכשלת, צריך להמתין 4 +
random_number_milliseconds
שניות ולנסות שוב את הבקשה. - וכן הלאה, עד פעם אחת (
maximum_backoff
). - ממשיכים להמתין ולנסות שוב עד למספר ניסיונות חוזרים מקסימלי, אבל לא מגדילים את תקופת ההמתנה בין הניסיונות החוזרים.
כאשר:
- זמן ההמתנה הוא
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 עם הזמן, יכול להיות שתצטרכו להגדיל את המכסות. אם אתם מצפים לעלייה משמעותית בשימוש בעתיד, תוכלו לבקש התאמות למכסות מראש דרך דף המכסות במסוף Google Cloud.
מידע נוסף זמין במשאבים הבאים: