เนื่องจาก Google เอกสาร API เป็นบริการที่ใช้ร่วมกัน เราจึงใช้โควต้าและข้อจํากัดในการตรวจสอบว่าการใช้งานเป็นธรรมโดยผู้ใช้ และเพื่อคุ้มครองประสิทธิภาพโดยรวมของระบบ Google Workspace
หากเกินโควต้า คุณจะได้รับการตอบกลับเป็นรหัสสถานะ HTTP 429: Too many requests
หากเป็นเช่นนี้ คุณควรใช้อัลกอริทึม Exponential Backoff แล้วลองอีกครั้งในภายหลัง
ตารางต่อไปนี้แสดงรายละเอียดของคําขอ
โควต้า | |||||
---|---|---|---|---|---|
คำขอที่อ่าน |
|
||||
คำขอที่เขียน |
|
แก้ไขข้อผิดพลาดเกี่ยวกับโควต้าตามเวลา
สําหรับข้อผิดพลาดที่อิงตามเวลาทั้งหมด (สูงสุด N คําขอต่อ X นาที) เราขอแนะนําให้โค้ดตรวจพบข้อยกเว้นและใช้ Exponential Backoff ถูกตัด เพื่อให้แน่ใจว่าอุปกรณ์จะไม่ทําให้เกิดโหลดมากเกินไป
Exponential Backoff เป็นกลยุทธ์การจัดการข้อผิดพลาดมาตรฐานสําหรับแอปพลิเคชันเครือข่าย อัลกอริทึม Exponential Backoff จะส่งคําขอซ้ําโดยใช้เวลารอที่เพิ่มขึ้นแบบทวีคูณ จนถึงเวลาย้อนกลับสูงสุด หากคําขอยังไม่สําเร็จ สิ่งสําคัญคือการเกิดความล่าช้าระหว่างคําขอต่างๆ เมื่อเวลาผ่านไปจนกว่าคําขอจะสําเร็จ
ตัวอย่างอัลกอริทึม
อัลกอริทึม Exponential Backoff จะลองส่งคําขอซ้ําแบบทวีคูณ ซึ่งเป็นการรอเวลานานขึ้นระหว่างการลองใหม่จนถึงเวลาแบ็คออฟสูงสุด เช่น
- ส่งคําขอไปยัง Google Documents 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 วิธีนี้จะช่วยหลีกเลี่ยงกรณีที่ไคลเอ็นต์จํานวนมากซิงค์ข้อมูลโดยในบางสถานการณ์ และลองใหม่ทั้งหมดพร้อมกัน โดยส่งคําขอใน wave ที่มีการซิงค์ข้อมูล ค่าrandom_number_milliseconds
จะคํานวณใหม่หลังจากแต่ละคําขอลองอีกครั้งmaximum_backoff
มักจะเท่ากับ 32 หรือ 64 วินาที ค่าที่เหมาะสมขึ้นอยู่กับกรณีการใช้งาน
ไคลเอ็นต์จะลองใหม่ต่อได้หลังครบกําหนดเวลา maximum_backoff
ลองใหม่หลังจากจุดนี้ไม่จําเป็นต้องเพิ่มเวลาแบ็คออฟต่อไป ตัวอย่างเช่น หากลูกค้าใช้เวลา maximum_backoff
ใน 64 วินาที เมื่อมาถึงค่านี้แล้ว ไคลเอ็นต์จะลองใหม่ได้ทุก 64 วินาที ในบางครั้ง ควรป้องกันไม่ให้ไคลเอ็นต์ลองซ้ําอีกโดยไม่มีกําหนด
เวลารอระหว่างการลองใหม่และจํานวนความพยายามซ้ําจะขึ้นอยู่กับกรณีการใช้งานและสภาพเครือข่าย
การกำหนดราคา
ใช้งาน Google Docs API ได้โดยไม่มีค่าใช้จ่ายเพิ่มเติม คําขอเกินขีดจํากัดโควต้าจะไม่ทําให้เกิดค่าใช้จ่ายเพิ่มเติมและบัญชีของคุณจะไม่ถูกเรียกเก็บเงิน
ขอเพิ่มโควต้า
คุณอาจต้องขอเพิ่มโควต้า ทั้งนี้ขึ้นอยู่กับการใช้ทรัพยากรของโปรเจ็กต์ การเรียก API โดยบัญชีบริการหนึ่งๆ จะถือว่าเป็น บัญชีเดียว การขอเพิ่มโควต้าอาจไม่ได้รับการอนุมัติเสมอไป การเพิ่มโควต้าที่มีขนาดใหญ่อาจใช้เวลานานในการอนุมัติ
แต่ละโปรเจ็กต์ใช้โควต้าเหมือนกัน เมื่อใช้ Google Cloud เพิ่มขึ้นเรื่อยๆ โควต้าอาจต้องมีเพิ่มขึ้น หากคาดว่าจะมีการใช้งานเพิ่มขึ้นอย่างมาก คุณจะขอปรับโควต้าได้ทันทีจากหน้าโควต้าใน Google Cloud Console
หากต้องการเรียนรู้เพิ่มเติม โปรดดูแหล่งข้อมูลต่อไปนี้