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