מגבלות שימוש

Google Drive API הוא שירות משותף, ולכן אנחנו מחילים מכסות ומגבלות על לוודא שכל המשתמשים משתמשים בו בצורה הוגנת וכדי להגן על הביצועים הכוללים של מערכת Google Workspace.

התראות שנשלחות לכתובת שצוינה פתיחת ערוץ התראות לא נחשבת כחלק ממגבלות המכסה שלכם. אבל, לפעמים קריאות ל-changes.watch, channels.stop, וגם files.watch שיטות כן נספרות במכסה שלכם.

אם תחרגו ממכסה, תקבלו 403: User rate limit exceeded תגובת קוד מצב HTTP. בדיקות נוספות של הגבלת הקצב של יצירת הבקשות הקצה העורפי של Drive עשוי גם ליצור 429: Too many requests תשובה. במקרה כזה, צריך להשתמש בהשהיה מעריכית לפני ניסיון חוזר (exponential backoff) ולנסות שוב מאוחר יותר. בתנאי במכסות לדקה שלמטה, אין הגבלה על מספר הבקשות שאפשר לשלוח ליום.

הטבלה הבאה מפרטת את מגבלות השאילתות:

מכסות
שאילתות
ל-60 שניות 12,000
ל-60 שניות לכל משתמש 12,000

פתרון שגיאות במכסות מבוססות-זמן

עבור כל השגיאות מבוססות הזמן (עד N בקשות ב-X דקות), מומלץ הקוד קולט את החריגה ומשתמש בהשהיה מעריכית קטועה לפני ניסיון חוזר (exponential backoff) כדי לוודא מכשירים לא יוצרים עומס יתר.

השהיה מעריכית לפני ניסיון חוזר (exponential backoff) היא אסטרטגיה סטנדרטית לטיפול בשגיאות באפליקציות רשת. האלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) מבצע ניסיון חוזר של בקשות באמצעות הגדלה אקספוננציאלית של זמני ההמתנה בין בקשות, עד למשך השהיה מקסימלית לפני ניסיון חוזר (backoff) אם הבקשות לא יצליחו, חשוב שהעיכוב בין הבקשות יתארך עם הזמן עד שהבקשה תושלם.

אלגוריתם לדוגמה

אלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) מבצע ניסיון חוזר של בקשות באופן אקספוננציאלי, וכך מאריך את זמן ההמתנה בין ניסיונות חוזרים עד לזמן השהיה מקסימלי לפני ניסיון חוזר. לדוגמה:

  1. שולחים בקשה ל-Google Drive API.
  2. אם הבקשה נכשלת, צריך להמתין 1 + random_number_milliseconds ולנסות שוב לבקשה.
  3. אם הבקשה נכשלת, צריך להמתין 2 + random_number_milliseconds ולנסות שוב לבקשה.
  4. אם הבקשה נכשלת, צריך להמתין 4 + random_number_milliseconds ולנסות שוב לבקשה.
  5. וכן הלאה, עד פעם אחת (maximum_backoff).
  6. יש להמשיך להמתין ולנסות שוב עד למספר המקסימלי של ניסיונות חוזרים, אך אין להאריך את ההמתנה בין הניסיונות החוזרים.

איפה:

  • זמן ההמתנה הוא 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 Drive API זמין ללא עלות נוספת. חריגה מהמכסה לא תחויבו כחיובים נוספים והחשבון שלכם לא יחויב.

בקשה להגדלת מכסה

יכול להיות שתרצו לבקש מכסה, בהתאם לשימוש במשאבים בפרויקט שלכם עלייה. קריאות ל-API שמתבצעות על ידי חשבון שירות נחשבות כעושות שימוש חשבון אחד. הגשת בקשה להגדלת מכסה לא מבטיחה אישור. לארג' תהליך האישור של הגדלת מכסות יכול להימשך זמן רב יותר.

המכסות לא זהות לכל הפרויקטים. ככל שהשימוש ב-Google Cloud הולך וגדל יכול להיות שתצטרכו להגדיל את המכסות. אם צפויה בקרוב בשימוש, ניתן לנקוט שליחת בקשה לשינויי מכסות מהדף Quotas במסוף Google Cloud.

מידע נוסף זמין במקורות המידע הבאים: