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

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

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

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

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

โควต้าต่อโปรเจ็กต์จะจำกัดอัตราการค้นหาสำหรับโปรเจ็กต์ 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

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

customEmojis.create

customEmojis.delete

600

การอ่านอิโมจิที่กำหนดเองต่อนาที

customEmojis.get

customEmojis.list

3000

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

users.sections.create

users.sections.delete

users.sections.patch

users.sections.position

users.sections.items.move

600

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

users.sections.list

users.sections.items.list

3000

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

users.availability.get

3000

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

users.availability.update

users.availability.markAsActive

users.availability.markAsAway

users.availability.markAsDoNotDisturb

3000

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

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

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

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

เมธอดของ Chat API

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

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

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

15

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

media.upload

spaces.delete

spaces.patch

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

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.delete

1

สร้างการเขียนรีแอ็กชันต่อวินาที

spaces.messages.reactions.create

5

การเขียนข้อความต่อวินาทีขณะนำเข้าข้อมูลไปยัง Google Chat

spaces.messages.create

10

โควต้าต่อผู้ใช้

โควต้าต่อผู้ใช้จะจำกัดอัตราการค้นหาสำหรับผู้ใช้ Google Chat คำค้นหา เกี่ยวข้องกับแอป Chat ทั้งหมดที่เรียกใช้เมธอด Chat API ใน นามของผู้ใช้ (โดยใช้การตรวจสอบสิทธิ์ของผู้ใช้)

ตารางต่อไปนี้แสดงรายละเอียดโควต้าการค้นหาต่อผู้ใช้

โควต้าต่อผู้ใช้

เมธอดของ Chat API

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

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

customEmojis.create

customEmojis.delete

1

การอ่านอีโมจิที่กำหนดเองต่อวินาที

customEmojis.get

customEmojis.list

15

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

users.sections.create

users.sections.delete

users.sections.patch

users.sections.position

users.sections.items.move

users.availability.update

users.availability.markAsActive

users.availability.markAsAway

users.availability.markAsDoNotDisturb

1

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

users.sections.list

users.sections.items.list

users.availability.get

15

โควต้าการใช้งานเพิ่มเติม

การเข้าชม 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. รอและลองอีกครั้งต่อไปจนถึงจำนวนครั้งสูงสุดที่กำหนด แต่ไม่ต้องเพิ่มระยะเวลารอ ระหว่างการลองใหม่

ที่ไหน

  • เวลารอคือ 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

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