Gmail API มีขีดจำกัดการใช้งานซึ่งจำกัดอัตราที่เรียกใช้เมธอดของ API ได้ โดยข้อจำกัดจะกำหนดในแง่ของหน่วยโควต้า ซึ่งเป็นหน่วยการวัดเชิงนามธรรมที่แสดงถึง การใช้ทรัพยากรของ Gmail
โควต้า Gmail API
ระบบจะบังคับใช้โควต้า 2 ประเภท ได้แก่
ต่อนาทีต่อโปรเจ็กต์: นี่คือจำนวนหน่วยโควต้าที่โปรเจ็กต์ Google Cloud ใช้ได้ใน 1 นาที
ต่อนาทีต่อผู้ใช้ต่อโปรเจ็กต์: นี่คือจำนวนหน่วยโควต้าที่ผู้ใช้รายใดรายหนึ่งใช้ได้ในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ ขีดจำกัดนี้มีจุดประสงค์ เพื่อช่วยให้คุณมั่นใจได้ว่าการใช้งานจะกระจายอย่างเป็นธรรมในหมู่ผู้ใช้
ตารางต่อไปนี้แสดงรายละเอียดขีดจํากัดเหล่านี้
| ประเภทขีดจำกัดการใช้งาน | ขีดจำกัด |
|---|---|
| ต่อนาทีต่อโปรเจ็กต์ | หน่วยโควต้า 1,200,000 หน่วย |
| ต่อนาทีต่อผู้ใช้ต่อโปรเจ็กต์ | หน่วยโควต้า 6,000 หน่วย |
ดูข้อมูลเกี่ยวกับการจัดการข้อผิดพลาดเกี่ยวกับขีดจำกัดได้ที่แก้ไขข้อผิดพลาด
เกณฑ์การเรียกเก็บเงินรายวัน
ขีดจำกัดต่อวันต่อโปรเจ็กต์นี้กำหนดจำนวนหน่วยโควต้าสูงสุดที่โปรเจ็กต์ Google Cloud ของคุณใช้ได้ภายในระยะเวลา 24 ชั่วโมงก่อนที่จะมีการเรียกเก็บเงิน
การใช้งานที่ต่ำกว่าเกณฑ์นี้จะไม่มีค่าใช้จ่ายเพิ่มเติมและระบบจะไม่เรียกเก็บเงินจากบัญชี Google Cloud ของคุณ เราจะแชร์รายละเอียดการเรียกเก็บเงินทั้งหมดในภายหลังของปี 2026 โดยจะแจ้งให้ทราบล่วงหน้าอย่างน้อย 90 วันก่อนที่การเปลี่ยนแปลงจะมีผล
คุณจะขอเพิ่มขีดจำกัดเกณฑ์รายวันนี้ไม่ได้
ตารางต่อไปนี้แสดงรายละเอียดขีดจำกัด
| ประเภทขีดจำกัดของเกณฑ์ | ขีดจำกัด |
|---|---|
| ต่อวันต่อโปรเจ็กต์ | หน่วยโควต้า 80,000,000 หน่วย |
โปรดดูข้อมูลเพิ่มเติมที่โมเดลมาตรฐานของ Google Workspace สำหรับเครื่องมือและ API ของตัวแทน
การใช้งานโควต้าต่อเมธอด
จำนวนหน่วยโควต้าที่ใช้ต่อคำขอจะแตกต่างกันไปตามเมธอดที่เรียกใช้ ตารางต่อไปนี้แสดงการใช้งานหน่วยโควต้าต่อวิธี
| วิธีการ | หน่วยโควต้า |
|---|---|
drafts.create |
10 |
drafts.delete |
10 |
drafts.get |
20 |
drafts.list |
5 |
drafts.send |
100 |
drafts.update |
15 |
getProfile |
1 |
history.list |
2 |
labels.create |
5 |
labels.delete |
5 |
labels.get |
1 |
labels.list |
1 |
labels.update |
5 |
messages.attachments.get |
20 |
messages.batchDelete |
50 |
messages.batchModify |
50 |
messages.delete |
10 |
messages.get |
20 |
messages.import |
25 |
messages.insert |
25 |
messages.list |
5 |
messages.modify |
5 |
messages.send |
100 |
messages.trash |
20 |
messages.untrash |
5 |
settings.delegates.create |
100 |
settings.delegates.delete |
5 |
settings.delegates.get |
1 |
settings.delegates.list |
1 |
settings.filters.create |
5 |
settings.filters.delete |
5 |
settings.filters.get |
1 |
settings.filters.list |
1 |
settings.forwardingAddresses.create |
100 |
settings.forwardingAddresses.delete |
5 |
settings.forwardingAddresses.get |
1 |
settings.forwardingAddresses.list |
1 |
settings.getAutoForwarding |
1 |
settings.getImap |
1 |
settings.getPop |
1 |
settings.getVacation |
1 |
settings.sendAs.create |
100 |
settings.sendAs.delete |
5 |
settings.sendAs.get |
1 |
settings.sendAs.list |
1 |
settings.sendAs.update |
100 |
settings.sendAs.verify |
100 |
settings.updateAutoForwarding |
5 |
settings.updateImap |
5 |
settings.updatePop |
100 |
settings.updateVacation |
5 |
stop |
50 |
threads.delete |
20 |
threads.get |
40 |
threads.list |
10 |
threads.modify |
10 |
threads.trash |
20 |
threads.untrash |
10 |
watch |
100 |
เมื่อใช้ Gmail API จะมีขีดจำกัดผู้รับ 500 คนต่อข้อความอีเมลด้วย
แก้ไขข้อผิดพลาดเกี่ยวกับโควต้าตามเวลา
สำหรับข้อผิดพลาดทั้งหมดที่อิงตามเวลา (คำขอสูงสุด N รายการต่อ X นาที) เราขอแนะนำให้ โค้ดของคุณตรวจพบข้อยกเว้นและใช้Exponential Backoff ที่ถูกตัดเพื่อให้แน่ใจว่าอุปกรณ์ จะไม่สร้างภาระงานมากเกินไป
Exponential Backoff เป็นกลยุทธ์การจัดการข้อผิดพลาดมาตรฐานสำหรับแอปพลิเคชันเครือข่าย อัลกอริทึม Exponential Backoff จะลองส่งคำขออีกครั้งโดยใช้เวลารอที่เพิ่มขึ้นแบบทวีคูณ ระหว่างคำขอต่างๆ จนถึงเวลา Backoff สูงสุด หากคำขอไม่สำเร็จ คุณควร เพิ่มความล่าช้าระหว่างคำขอเมื่อเวลาผ่านไปจนกว่าคำขอจะสำเร็จ
ตัวอย่างอัลกอริทึม
อัลกอริทึม Exponential Backoff จะลองส่งคำขออีกครั้งแบบทวีคูณ โดยจะเพิ่มเวลารอ ระหว่างการลองส่งอีกครั้งจนถึงเวลา Backoff สูงสุด เช่น
- ส่งคำขอไปยัง Gmail API
- หากคำขอไม่สำเร็จ ให้รอ 1 +
random_number_millisecondsแล้วลองส่งคำขออีกครั้ง - หากคำขอไม่สำเร็จ ให้รอ 2 +
random_number_millisecondsแล้วลองส่งคำขออีกครั้ง - หากคำขอไม่สำเร็จ ให้รอ 4 +
random_number_millisecondsแล้วลองส่งคำขออีกครั้ง - และอื่นๆ สูงสุด
maximum_backoffครั้ง - รอและลองอีกครั้งต่อไปจนกว่าจะถึงจำนวนครั้งสูงสุดที่ลองใหม่ได้ แต่ไม่ต้องเพิ่มระยะเวลารอ ระหว่างการลองใหม่
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
การลองใหม่หลังจากจุดนี้ไม่จำเป็นต้องเพิ่มเวลา Backoff ต่อไป ตัวอย่างเช่น หากไคลเอ็นต์ใช้maximum_backoffเป็นเวลา 64 วินาที หลังจากถึงค่านี้แล้ว ไคลเอ็นต์จะลองอีกครั้งทุกๆ 64 วินาทีได้ ในบางกรณี
ไม่ควรให้ไคลเอ็นต์ลองอีกครั้งอย่างไม่มีกำหนด
เวลาในการรอระหว่างการลองใหม่และจำนวนครั้งที่ลองใหม่จะขึ้นอยู่กับกรณีการใช้งาน และสภาพเครือข่าย
ราคา
การใช้งาน Gmail API มาตรฐานทั้งหมดจะใช้งานได้โดยไม่มีค่าใช้จ่ายเพิ่มเติม การใช้โควต้าเกิน ขีดจํากัดของคําขอจะทําให้มีการเรียกเก็บเงินจากบัญชีสําหรับการเรียกเก็บเงินใน Google Cloud ในช่วงปลายปี 2026 ดูข้อมูลเพิ่มเติมได้ที่โมเดลมาตรฐานของ Google Workspace สำหรับเครื่องมือและ API ของตัวแทน
ขอเพิ่มโควต้า
คุณอาจต้องขอปรับโควต้า ทั้งนี้ขึ้นอยู่กับการใช้ทรัพยากรของโปรเจ็กต์ ระบบจะถือว่าการเรียก API โดยบัญชีบริการเป็นการใช้บัญชีเดียว การขอโควต้าที่ปรับแล้วอาจไม่ได้รับการอนุมัติเสมอไป คำขอปรับโควต้า ซึ่งจะเพิ่มค่าโควต้าอย่างมีนัยสำคัญอาจใช้เวลานานกว่าในการอนุมัติ
โปรเจ็กต์แต่ละโปรเจ็กต์อาจมีโควต้าไม่เท่ากัน เมื่อคุณใช้ Google Cloud มากขึ้นเรื่อยๆ ค่าโควต้าอาจต้องเพิ่มขึ้น หากคาดว่าการใช้งานจะเพิ่มขึ้นอย่างเห็นได้ชัดในอนาคต คุณสามารถขอปรับโควต้าล่วงหน้าได้จากหน้าโควต้าและขีดจำกัดของระบบในคอนโซล Google Cloud
ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลต่อไปนี้