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

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

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

โควต้า 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 เป็นกลยุทธ์การจัดการข้อผิดพลาดมาตรฐานสำหรับแอปพลิเคชันเครือข่าย อัลกอริทึม 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 ได้

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