Karena Google Sheets API adalah layanan bersama, kami menerapkan kuota dan batasan untuk memastikannya digunakan secara adil oleh semua pengguna dan untuk melindungi kesehatan sistem Google Workspace secara keseluruhan.
Batas kuota
Meskipun Sheets API tidak memiliki batas ukuran tetap untuk permintaan API, pengguna mungkin mengalami batas dari berbagai komponen pemrosesan yang tidak dikontrol oleh Spreadsheet. Untuk mempercepat permintaan, Google merekomendasikan payload maksimum sebesar 2 MB.
Sheets API memiliki kuota per menit, dan diisi ulang setiap menit. Misalnya, ada batas permintaan baca sebesar 300 per menit per project.
Jika aplikasi Anda mengirim 350 permintaan dalam satu menit, 50 permintaan tambahan akan melebihi kuota dan menghasilkan
respons kode status HTTP 429: Too many requests
. Jika hal ini terjadi, Anda harus menggunakan algoritme backoff eksponensial. Setelah 1 menit, Anda dapat menjalankan permintaan lagi. Pengguna dapat mengirimkan beberapa permintaan sekaligus, asalkan berada dalam batas kuota.
Semua permintaan Spreadsheet diterapkan secara atomis. Artinya, jika ada permintaan yang tidak valid, seluruh update tidak akan berhasil dan tidak ada perubahan yang (berpotensi bergantung) yang akan diterapkan.
Tabel berikut menguraikan batas permintaan. Asalkan Anda tidak melebihi kuota per menit, tidak ada batasan jumlah permintaan yang dapat Anda buat per hari.
Kuota | |||||
---|---|---|---|---|---|
Permintaan baca |
|
||||
Permintaan tulis |
|
Untuk mengetahui detail tentang batas file, buka File yang dapat Anda simpan di Google Drive.
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 perangkat Anda tidak menghasilkan beban yang berlebihan.
Backoff eksponensial adalah strategi penanganan error standar untuk aplikasi jaringan. Algoritme backoff eksponensial mencoba lagi permintaan menggunakan waktu tunggu yang meningkat secara eksponensial di antara permintaan, hingga waktu backoff maksimum. Jika permintaan masih tidak berhasil, penundaan di antara permintaan akan meningkat dari waktu ke waktu hingga permintaan berhasil.
Contoh algoritme
Algoritme backoff eksponensial mencoba lagi permintaan secara eksponensial, sehingga meningkatkan waktu tunggu antara percobaan ulang hingga waktu backoff maksimum. Contoh:
- Buat permintaan ke Google Sheets API.
- Jika permintaan gagal, tunggu 1 +
random_number_milliseconds
lalu coba lagi permintaan tersebut. - Jika permintaan gagal, tunggu 2 +
random_number_milliseconds
, lalu coba lagi permintaan tersebut. - Jika permintaan gagal, tunggu 4 +
random_number_milliseconds
lalu coba lagi permintaan tersebut. - Dan seterusnya, hingga
maximum_backoff
kali. - Lanjutkan menunggu dan mencoba ulang hingga jumlah maksimum percobaan ulang, tetapi jangan tingkatkan waktu tunggu antara percobaan ulang.
dalam hal ini:
- Waktu tunggu adalah
min(((2^n)+random_number_milliseconds), maximum_backoff)
, dengann
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 saat banyak klien disinkronkan melalui situasi tertentu dan semuanya mencoba lagi sekaligus, sehingga mengirimkan permintaan dalam gelombang yang disinkronkan. Nilairandom_number_milliseconds
dihitung ulang setelah setiap permintaan percobaan ulang.maximum_backoff
biasanya berdurasi 32 atau 64 detik. Nilai yang sesuai bergantung pada kasus penggunaan.
Klien dapat melanjutkan percobaan ulang setelah mencapai waktu maximum_backoff
.
Percobaan ulang setelah tahap ini tidak perlu terus meningkatkan waktu backoff. Misalnya, jika klien menggunakan waktu maximum_backoff
64 detik, maka setelah mencapai nilai ini, klien dapat mencoba lagi setiap 64 detik. Adakalanya, klien dicegah untuk mencoba kembali tanpa batas waktu.
Waktu tunggu antara percobaan ulang dan jumlah percobaan ulang bergantung pada kasus penggunaan dan kondisi jaringan Anda.
Harga
Semua penggunaan Google Sheets API tersedia tanpa biaya tambahan. Melebihi batas permintaan kuota tidak akan dikenakan biaya tambahan dan akun Anda tidak akan ditagih.
Meminta penambahan kuota
Bergantung pada penggunaan resource project, Anda dapat meminta penambahan kuota. Panggilan API oleh akun layanan dianggap menggunakan satu akun. Mengajukan permohonan peningkatan kuota tidak menjamin persetujuan. Penambahan kuota yang besar dapat memerlukan waktu lebih lama untuk disetujui.
Tidak semua project memiliki kuota yang sama. Seiring meningkatnya penggunaan Google Cloud dari waktu ke waktu, kuota Anda mungkin perlu ditingkatkan. Jika Anda merencanakan peningkatan penggunaan yang signifikan di masa mendatang, Anda dapat meminta penyesuaian kuota secara proaktif dari halaman Kuota di Google Cloud Console.
Untuk mempelajari lebih lanjut, lihat referensi berikut:
- Tentang permintaan peningkatan kuota
- Melihat penggunaan kuota dan batas saat ini
- Meminta batas kuota yang lebih besar