Google Docs API הוא שירות משותף, ולכן אנחנו מחילים מכסות והגבלות כדי לוודא שכל המשתמשים משתמשים בו בצורה הוגנת, וכדי להגן על התקינות הכוללת של מערכת Google Workspace.
אם תחרגו ממכסה, בדרך כלל תקבלו תשובה עם קוד הסטטוס 429: Too many requests
HTTP. במקרה כזה, צריך להשתמש באלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) ולנסות שוב מאוחר יותר.
בטבלה הבאה מפורטות המגבלות על הבקשות:
מכסות | |||||
---|---|---|---|---|---|
בקשות קריאה |
|
||||
כתיבת בקשות |
|
פתרון שגיאות במכסות מבוססות-זמן
בכל השגיאות שמבוססות על זמן (עד N בקשות בכל X דקות), מומלץ לכתוב בקוד תפיסה של החריגה ולהשתמש בהשהיה מעריכית קטועה כדי לוודא שהמכשירים לא יוצרים עומס יתר.
השהיה מעריכית לפני ניסיון חוזר היא אסטרטגיה סטנדרטית לטיפול בשגיאות באפליקציות רשת. אלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) מבצע ניסיון חוזר של בקשות באמצעות הגדלה אקספוננציאלית של זמני ההמתנה בין הבקשות, עד למשך ההשהיה המקסימלי. אם הבקשות עדיין נכשלות, חשוב להגדיל את ההשהיות בין הבקשות עם הזמן עד שהבקשה תצליח.
דוגמה לאלגוריתם
אלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) מבצע ניסיון חוזר של בקשות באופן אקספוננציאלי, וכך מאריך את זמן ההמתנה בין הניסיונות החוזרים עד למשך ההשהיה המקסימלי לפני ניסיון חוזר. לדוגמה:
- שולחים בקשה ל-Google Docs 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 שניות. בשלב כלשהו,
הלקוחות לא יוכלו לבצע ניסיון חוזר ללא הגבלת זמן.
משך ההמתנה בין הניסיונות החוזרים ומספר הניסיונות החוזרים תלויים בתרחיש לדוגמה ובתנאי הרשת.
תמחור
כל השימוש ב-Google Docs API זמין ללא עלות נוספת. חריגה מהמגבלות של הבקשות למכסה לא כרוכה בחיובים נוספים, ולא נחייב את החשבון שלכם.
שליחת בקשה להגדלת מכסה
בהתאם לשימוש במשאבים בפרויקט, יכול להיות שתרצו לבקש הגדלה של המכסה. קריאות ל-API על ידי חשבון שירות נחשבות לשימוש בחשבון יחיד. שליחת בקשה להגדלת המכסה לא מבטיחה אישור. יכול להיות שיידרש זמן רב יותר לאישור הגדלה של מכסות גדולות.
לא לכל הפרויקטים יש את אותן מכסות. השימוש ב-Google Cloud הולך וגדל, ולכן יכול להיות שהמכסות שלכם יגדלו. אם אתם מצפים לעלייה משמעותית בשימוש בעתיד, תוכלו לבקש התאמות למכסות מראש דרך דף המכסות במסוף Google Cloud.
מידע נוסף זמין במקורות המידע הבאים: