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

เนื่องจาก 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

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

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

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

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

เมธอดของ Chat API

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

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

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 Chat คำถาม เกี่ยวข้องกับแอป Chat ทั้งหมดที่เรียกใช้เมธอด Chat API ในนามของผู้ใช้ (โดยใช้การตรวจสอบสิทธิ์ของผู้ใช้)

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

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

เมธอดของ Chat API

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

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

customEmojis.get

customEmojis.list

900

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

customEmojis.create

customEmojis.delete

60

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

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

ที่ไหน

  • เวลารออยู่ที่ 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 Console ได้ล่วงหน้า

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