ขีดจำกัดการใช้งาน

เนื่องจาก Google Chat API เป็นบริการที่ใช้ร่วมกัน เราจึงใช้โควต้าและข้อจำกัดเพื่อให้มั่นใจว่าผู้ใช้ทุกคนจะใช้ API ได้อย่างเป็นธรรมและเพื่อปกป้องประสิทธิภาพโดยรวมของ Google Workspace

หากใช้โควต้าเกิน คุณจะได้รับคําตอบพร้อมรหัสสถานะ 429: Too many requests HTTP การตรวจสอบการจำกัดอัตราการส่งข้อมูลเพิ่มเติมในแบ็กเอนด์ของ Chat อาจทำให้เกิดข้อผิดพลาดในการตอบกลับเดียวกันนี้ด้วย หากเกิดข้อผิดพลาดนี้ขึ้น คุณควรใช้อัลกอริทึมการลดจำนวนแบบทวีคูณ แล้วลองอีกครั้งในภายหลัง ตราบใดที่คุณใช้โควต้าต่อนาทีที่ระบุไว้ในตารางต่อไปนี้ คุณจะส่งคำขอได้แบบไม่จำกัดจำนวนต่อวัน

โควต้า 2 ประเภทที่ใช้กับเมธอดของ Chat API ได้แก่ โควต้าต่อพื้นที่ทำงานและต่อโปรเจ็กต์

โควต้าต่อพื้นที่ทำงาน

โควต้าต่อพื้นที่ทำงานจะจำกัดอัตราการค้นหาในพื้นที่ทำงานหนึ่งๆ และแชร์กันระหว่างแอป Chat ทั้งหมดที่ทำงานในพื้นที่ทำงานนั้นซึ่งเรียกใช้เมธอด Chat API ที่ระบุไว้สำหรับโควต้าแต่ละรายการ

ตารางต่อไปนี้แสดงรายละเอียดขีดจํากัดการค้นหาต่อพื้นที่ทำงาน

โควต้าต่อพื้นที่ทำงาน

เมธอดของ Chat API

ขีดจำกัด (ต่อ 60 วินาที โดยแชร์
กับแอป Chat ทั้งหมดในพื้นที่ทำงาน)

การอ่านต่อนาที

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

900

การเขียนต่อนาที

media.upload

spaces.delete

spaces.patch

spaces.messages.create (มีขีดจํากัดเพิ่มเติมสําหรับเว็บฮุคขาเข้า)

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.create

spaces.messages.reactions.delete

60

โควต้าต่อโปรเจ็กต์

โควต้าต่อโปรเจ็กต์จะจำกัดอัตราการค้นหาสำหรับโปรเจ็กต์ Google Cloud และมีผลกับแอป Chat เดียวที่เรียกใช้เมธอด Chat API ที่ระบุสำหรับโควต้าแต่ละรายการ

ตารางต่อไปนี้แสดงรายละเอียดขีดจํากัดการค้นหาต่อโปรเจ็กต์ นอกจากนี้ คุณยังดูขีดจำกัดเหล่านี้ได้ในหน้าโควต้า

โควต้าต่อโปรเจ็กต์

เมธอดของ Chat API

ขีดจํากัด (ต่อ 60 วินาที)

การเขียนข้อความต่อนาที

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3000

การอ่านข้อความต่อนาที

spaces.messages.get

spaces.messages.list

3000

การเขียนข้อมูลการเป็นสมาชิกต่อนาที

spaces.members.create

spaces.members.delete

300

การอ่านจากการเป็นสมาชิกต่อนาที

spaces.members.get

spaces.members.list

3000

การเขียนพื้นที่ทำงานต่อนาที

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

การอ่านพื้นที่ต่อนาที

spaces.get

spaces.list

spaces.findDirectMessage

3000

การเขียนไฟล์แนบต่อนาที

media.upload

600

การอ่านไฟล์แนบต่อนาที

spaces.messages.attachments.get

media.download

3000

การเขียนความรู้สึกต่อนาที

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

การอ่านรีแอ็กชันต่อนาที

spaces.messages.reactions.list

3000

ขีดจำกัดการใช้งานเพิ่มเติม

การสร้างพื้นที่ทำงานประเภท GROUP_CHAT หรือ SPACE (โดยใช้วิธีการ spaces.create หรือ spaces.setup) จะมีขีดจำกัดโควต้าเพิ่มเติม สร้างพื้นที่ทำงานประเภทเหล่านี้ไม่เกิน 35 รายการต่อนาที และ 800 รายการต่อชั่วโมง พื้นที่ทำงานประเภท DIRECT_MESSAGE จะไม่อยู่ภายใต้ขีดจำกัดโควต้าเพิ่มเติมเหล่านี้

การเข้าชม API สูงที่กำหนดเป้าหมายไปยังพื้นที่ทำงานเดียวกันอาจทริกเกอร์ขีดจำกัดภายในเพิ่มเติมซึ่งไม่แสดงในหน้าโควต้า

แก้ไขข้อผิดพลาดเกี่ยวกับโควต้าตามเวลา

สําหรับข้อผิดพลาดทั้งหมดตามเวลา (คําขอสูงสุด N รายการต่อ X นาที) เราขอแนะนําให้โค้ดของคุณจับข้อยกเว้นและใช้การลดเวลารอแบบทําซ้ำแบบจํากัดเพื่อให้อุปกรณ์ไม่สร้างภาระมากเกินไป

การถดถอยแบบเลขชี้กำลังเป็นกลยุทธ์การจัดการข้อผิดพลาดมาตรฐานสําหรับแอปพลิเคชันเครือข่าย อัลกอริทึม Exponential Backoff จะส่งคำขออีกครั้งโดยใช้เวลารอที่เพิ่มขึ้นแบบทวีคูณระหว่างคำขอ สูงสุดไม่เกินเวลา Backoff สูงสุด หากคำขอยังคงไม่สำเร็จ คุณควรเพิ่มความล่าช้าระหว่างคำขอเมื่อเวลาผ่านไปจนกว่าคำขอจะสำเร็จ

ตัวอย่างอัลกอริทึม

อัลกอริทึม Exponential Backoff จะส่งคำขอซ้ำแบบทวีคูณ โดยจะเพิ่มเวลารอระหว่างการส่งซ้ำสูงสุดถึงเวลา Backoff สูงสุด เช่น

  1. ส่งคําขอไปยัง Google Chat API
  2. หากคำขอไม่สำเร็จ ให้รอ 1 + random_number_milliseconds แล้วลองส่งคำขออีกครั้ง
  3. หากคำขอไม่สำเร็จ ให้รอ 2 + random_number_milliseconds แล้วลองส่งคำขออีกครั้ง
  4. หากคำขอไม่สำเร็จ ให้รอ 4 + random_number_milliseconds แล้วลองส่งคำขออีกครั้ง
  5. และอื่นๆ สูงสุด maximum_backoff ครั้ง
  6. รอและลองอีกครั้งจนกว่าจะถึงจำนวนครั้งที่ลองสูงสุด แต่อย่าเพิ่มระยะเวลารอระหว่างการลองใหม่

where:

  • เวลารออยู่ที่ 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 วินาที เมื่อถึงจุดหนึ่ง ระบบควรป้องกันไม่ให้ไคลเอ็นต์ลองใหม่อย่างไม่มีกำหนด

ระยะเวลารอระหว่างการลองอีกครั้งและจำนวนครั้งที่ลองใหม่จะขึ้นอยู่กับกรณีการใช้งานและสภาพเครือข่าย

ขอเพิ่มโควต้าต่อโปรเจ็กต์

คุณอาจต้องขอเพิ่มโควต้า ทั้งนี้ขึ้นอยู่กับการใช้ทรัพยากรของโปรเจ็กต์ การเรียก API โดยบัญชีบริการจะถือว่าใช้บัญชีเดียว การขอเพิ่มโควต้าอาจไม่ได้รับการอนุมัติเสมอไป หากขอเพิ่มโควต้าจำนวนมาก การอนุมัติก็อาจใช้เวลานานได้

โปรเจ็กต์แต่ละรายการอาจมีโควต้าไม่เท่ากัน เมื่อคุณใช้ Google Cloud มากขึ้นเรื่อยๆ เมื่อเวลาผ่านไป คุณอาจต้องเพิ่มโควต้า หากคาดว่าจะมีการใช้งานเพิ่มขึ้นอย่างมากในอนาคต คุณขอปรับโควต้าจากหน้าโควต้าในคอนโซล Google Cloud ได้

ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลต่อไปนี้