Batas penggunaan

Karena Google Chat API adalah layanan bersama, kami menerapkan kuota dan batasan untuk pastikan digunakan secara adil oleh semua pengguna dan untuk melindungi performa Google Workspace.

Jika melebihi kuota, Anda akan menerima HTTP 429: Too many requests respons kode status. Pemeriksaan batas kapasitas tambahan di Chat backend mungkin juga menghasilkan respons error yang sama. Jika kesalahan ini terjadi, Anda sebaiknya menggunakan algoritma backoff eksponensial dan mencoba lagi nanti. Selama Anda tidak melebihi kuota per menit yang tercantum di di tabel berikut, tidak ada batasan jumlah permintaan yang dapat Anda buat per hari.

Dua jenis kuota berlaku untuk metode Chat API: per ruang dan per project kuota tambahan.

Kuota per ruang

Kuota per ruang membatasi kapasitas kueri dalam ruang tertentu dan digunakan bersama oleh semua aplikasi Chat yang bertindak di ruang tersebut yang memanggil orang yang tercantum Metode Chat API untuk setiap kuota.

Tabel berikut menjelaskan batas kueri per ruang:

Kuota per ruang

Metode Chat API

Batas (per 60 detik, dibagikan
di antara semua aplikasi Chat di ruang)

Operasi baca per menit

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

Penulisan per menit

media.upload

spaces.delete

spaces.patch

spaces.messages.create (juga berlaku untuk webhook masuk)

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.create

spaces.messages.reactions.delete

60

Kuota per project

Kuota per project membatasi kapasitas kueri untuk project Google Cloud, dan sehingga berlaku untuk satu aplikasi Chat yang memanggil Metode Chat API untuk setiap kuota.

Tabel berikut menjelaskan batas kueri per project. Anda juga dapat menemukan batasan ini di halaman Quotas.

Kuota Per project

Metode Chat API

Batas (per 60 detik)

Penulisan pesan per menit

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3000

Pembacaan pesan per menit

spaces.messages.get

spaces.messages.list

3000

Operasi tulis keanggotaan per menit

spaces.members.create

spaces.members.delete

300

Bacaan langganan per menit

spaces.members.get

spaces.members.list

3000

Operasi tulis per menit

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

Pembacaan ruang per menit

spaces.get

spaces.list

spaces.findDirectMessage

3000

Penulisan lampiran per menit

media.upload

600

Bacaan lampiran per menit

spaces.messages.attachments.get

media.download

3000

Penulisan reaksi per menit

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

Pembacaan reaksi per menit

spaces.messages.reactions.list

3000

Batas penggunaan tambahan

Ada batas kuota tambahan untuk membuat ruang jenis GROUP_CHAT atau SPACE (dengan menggunakan metode spaces.create atau spaces.setup). Buat kurang dari 35 ruang per menit dan 210 spasi per jam dari jenis ini. Ruang jenis DIRECT_MESSAGE tidak tunduk kepada batas kuota tambahan.

Kueri besar per detik (QPS) API apa pun yang menargetkan ruang yang sama dapat dipicu batas internal tambahan yang tidak terlihat di Quotas.

Mengatasi error kuota berbasis waktu

Untuk semua error berbasis waktu (maksimum N permintaan per X menit), sebaiknya kode Anda menangkap pengecualian dan menggunakan backoff eksponensial terpotong untuk memastikan tidak menimbulkan beban berlebihan.

Backoff eksponensial adalah strategi penanganan error standar untuk aplikasi jaringan. Channel algoritma backoff eksponensial mencoba kembali permintaan menggunakan waktu tunggu yang meningkat secara eksponensial antarpermintaan, hingga waktu backoff maksimum. Jika permintaan tetap tidak berhasil, bahwa penundaan di antara permintaan akan meningkat seiring waktu sampai permintaan berhasil.

Contoh algoritma

Algoritma backoff eksponensial mencoba kembali permintaan secara eksponensial, sehingga meningkatkan waktu tunggu di antara percobaan ulang hingga waktu backoff maksimum. Contoh:

  1. Buat permintaan ke Google Chat API.
  2. Jika permintaan gagal, tunggu 1 + random_number_milliseconds dan coba lagi terhadap permintaan.
  3. Jika permintaan gagal, tunggu 2 + random_number_milliseconds dan coba lagi terhadap permintaan.
  4. Jika permintaan gagal, tunggu 4 + random_number_milliseconds dan coba lagi terhadap permintaan.
  5. Dan seterusnya, hingga maximum_backoff kali.
  6. Terus tunggu dan coba lagi hingga jumlah maksimum percobaan ulang, tetapi jangan tingkatkan waktu tunggu yang sama di antara percobaan ulang.

dalam hal ini:

  • Waktu tunggunya adalah min(((2^n)+random_number_milliseconds), maximum_backoff), dengan n bertambah 1 untuk setiap iterasi (permintaan).
  • random_number_milliseconds adalah angka acak milidetik yang kurang dari atau sama dengan 1.000. Hal ini membantu menghindari kasus di mana banyak klien disinkronkan oleh beberapa situasi dan semua percobaan ulang sekaligus, mengirimkan permintaan secara ombak. Nilai random_number_milliseconds dihitung ulang setelah masing-masing permintaan percobaan ulang.
  • maximum_backoff biasanya 32 atau 64 detik. Nilai yang sesuai bergantung pada kasus penggunaannya.

Klien dapat terus mencoba ulang setelah mencapai waktu maximum_backoff. Percobaan ulang setelah tahap ini tidak perlu terus meningkatkan waktu backoff. Sebagai Misalnya, jika klien menggunakan waktu maximum_backoff selama 64 detik, maka setelah mencapai nilai ini, klien dapat mencoba ulang setiap 64 detik. Pada titik tertentu, klien harus dicegah agar tidak melakukan percobaan ulang tanpa batas waktu.

Waktu tunggu antara percobaan ulang dan jumlah percobaan ulang bergantung pada kasus penggunaan Anda dan kondisi jaringan.

Meminta peningkatan kuota per project

Bergantung pada penggunaan resource project, Anda mungkin ingin meminta kuota meningkat. Panggilan API oleh akun layanan dianggap menggunakan akun tunggal. Mengajukan permohonan agar kuota ditambah tidak menjamin persetujuan. Besar peningkatan kuota mungkin memerlukan waktu lebih lama untuk disetujui.

Tidak semua project memiliki kuota yang sama. Seiring dengan meningkatnya penggunaan Google Cloud kuota Anda mungkin perlu ditingkatkan. Jika Anda mengharapkan peristiwa penting meningkat, Anda dapat secara proaktif meminta penyesuaian kuota dari halaman Quotas di Konsol Google Cloud.

Untuk mempelajari lebih lanjut, lihat referensi berikut: