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