Saat Anda membuat kueri Developer Knowledge API atau server MCP Developer Knowledge di aplikasi produksi dan agen AI, harus ada penanganan error dan pengelolaan kuota untuk mencapai performa tinggi.
Dalam panduan ini Anda akan mempelajari cara:
- Terapkan backoff eksponensial terpotong dengan jitter untuk respons HTTP 429.
- Tangani kode error gRPC kanonis (
INVALID_ARGUMENT,PERMISSION_DENIED,RESOURCE_EXHAUSTED). - Kelola waktu tunggu koneksi MCP dan logika percobaan ulang.
- Terapkan praktik terbaik pengelolaan kuota dan caching.
Pembatasan kapasitas HTTP 429 dan backoff eksponensial
Jika kecepatan permintaan melebihi kuota API default, layanan akan menampilkan error
HTTP 429 Too Many Requests. Aplikasi harus menerapkan logika percobaan ulang
menggunakan backoff eksponensial terpotong dengan jitter untuk menghindari kelebihan beban pada
layanan.
Backoff eksponensial terpotong
Hitung penundaan percobaan ulang menggunakan formula berikut:
retry_delay = min(max_delay, initial_delay * (2 ^ attempt) + jitter)
Gunakan parameter berikut untuk menghitung penundaan percobaan ulang:
initial_delay: penundaan percobaan ulang awal (misalnya, 1,0 detik).max_delay: batas penundaan maksimum (misalnya, 32,0 detik).attempt: jumlah percobaan ulang saat ini (0, 1, 2, ...).jitter: nilai acak antara 0 dan 1,0 detik untuk mencegah lonjakan sinkronisasi thread (masalah thundering herd).
Penanganan error gRPC
Aplikasi yang mengakses layanan melalui gRPC harus memeriksa nilai kanonis
grpc.StatusCode.
Kode status gRPC standar
Tabel berikut mencantumkan kode status gRPC kanonis yang ditampilkan oleh layanan dan penanganan klien yang direkomendasikan:
| Kode status gRPC | Status HTTP | Akar masalah | Tindakan yang disarankan |
|---|---|---|---|
INVALID_ARGUMENT |
400 Bad Request |
String kueri salah format, format parameter tidak valid, atau mask kolom tidak valid. | Jangan coba lagi. Perbaiki parameter permintaan sebelum mengulangi. |
UNAUTHENTICATED |
401 Unauthorized |
Kunci API atau token OAuth Bearer tidak ada, sudah tidak berlaku, atau salah format. | Jangan coba lagi. Muat ulang kredensial atau buat kunci API yang valid. |
PERMISSION_DENIED |
403 Forbidden |
Kunci API tidak memiliki izin atau Developer Knowledge API dinonaktifkan di project. | Jangan coba lagi. Pastikan API diaktifkan di konsol Google Cloud. |
NOT_FOUND |
404 Not Found |
Jalur dokumen parent yang ditentukan tidak ada. BatchGetDocuments gagal secara atomik jika ada dokumen yang diminta tidak ditemukan. |
Jangan coba lagi. Verifikasi nama resource dokumen. |
RESOURCE_EXHAUSTED |
429 Too Many Requests |
Batas frekuensi atau batas kuota project terlampaui. | Coba lagi menggunakan backoff eksponensial dengan jitter. |
UNAVAILABLE |
503 Service Unavailable |
Koneksi jaringan terputus sementara atau server dimulai ulang. | Coba lagi dengan backoff eksponensial. |
DEADLINE_EXCEEDED |
504 Gateway Timeout |
Permintaan melampaui batas waktu RPC yang dikonfigurasi sebelum selesai. | Coba lagi dengan waktu tunggu RPC klien yang lebih lama. |
Pengelolaan error dan waktu tunggu koneksi MCP habis
Server MCP Pengetahuan Developer adalah layanan jarak jauh yang dihosting di
https://developerknowledge.googleapis.com/mcp yang diakses melalui HTTPS (menggunakan HTTP
POST atau Peristiwa yang Dikirim Server). Host dan agen AI harus mengelola waktu tunggu koneksi dan error alat dengan baik.
Waktu tunggu eksekusi alat
Saat agen memanggil search_documents, get_documents, atau answer_query,
panggilan alat dapat melampaui periode tunggu (misalnya, 30 detik) jika koneksi
jaringan tertunda.
Untuk menangani waktu tunggu eksekusi alat:
- Konfigurasi waktu tunggu klien: tetapkan waktu tunggu eksekusi alat menjadi 30–60 detik dalam konfigurasi klien host MCP Anda.
- Menangani gangguan jaringan: coba lagi permintaan HTTP yang gagal dengan backoff eksponensial saat mengalami gangguan jaringan sementara atau respons HTTP 503.
- Periksa pesan error: mengurai pesan error JSON-RPC standar atau kode status error HTTP untuk membedakan argumen yang tidak valid dari habisnya kuota.
Praktik terbaik pengelolaan kuota
Ikuti praktik terbaik berikut untuk mempertahankan penggunaan API yang optimal dan menghindari batas kapasitas yang tidak terduga:
- Cache konten dokumen yang diambil: menyimpan dokumen Markdown yang diambil secara lokal atau dalam cache (seperti Redis) saat membangun aplikasi yang sering mengakses halaman yang sama.
- Gunakan pengambilan batch: gunakan
documents.batchGet, bukan mengeksekusi beberapa permintaandocuments.getberurutan. - Mengoptimalkan kolom kueri: minta hanya kolom respons yang diperlukan menggunakan
masker kolom
selektif (
fields=results(parent,content)). - Pantau penggunaan kuota: lacak kecepatan permintaan API di dasbor API Konsol Google Cloud.