Tiga Interval Sleep untuk Tiga API
Saya membangun pipeline ETL untuk tiga situs direktori pada bulan April. Setiap situs menggunakan API yang berbeda: Steam, GitHub, dan HuggingFace.
Saya harus mengatur interval sleep untuk masing-masing API tersebut. Angka, mode kegagalan, dan penanganan error-nya semuanya berbeda. Berikut adalah apa yang saya gunakan dan alasannya.
Steam: sleep 250ms
Dokumentasi Steam tidak spesifik mengenai rate limit. Data komunitas menunjukkan sekitar 200 permintaan setiap 5 menit per IP. Ini berarti interval 1,5 detik adalah aman.
Saya justru menggunakan 250ms. Pekerjaan rutin malam saya hanya memproses 60 entri game. Dengan 250ms, total waktu sleep adalah 15 detik. Dengan 1,5 detik, waktunya menjadi 90 detik. Menghemat waktu sangat penting saat Anda memproses banyak situs.
Jika Steam mengembalikan error, pekerjaan tidak akan berhenti. Sistem akan mencatat error tersebut dan lanjut ke item berikutnya. Data akan diperbarui pada malam berikutnya.
GitHub: sleep 100ms
GitHub sangat jelas. Pengguna tanpa autentikasi mendapatkan 60 permintaan per jam. Pengguna dengan token mendapatkan 5.000 permintaan per jam.
Saya menggunakan sleep 100ms sebagai bentuk kesopanan (politeness measure). Token-lah yang menangani beban berat terkait rate limit. Pipeline saya menggunakan core REST API, bukan search API. Hal ini memungkinkan limit yang jauh lebih tinggi.
HuggingFace: Tanpa sleep
Saya belum pernah terkena rate limit selama berminggu-minggu menjalankan proses rutin malam. Registry API dirancang untuk alat batch seperti milik saya.
Saya mengambil hingga 100 model sekaligus. Saya menggunakan token autentikasi untuk meningkatkan limit lebih tinggi lagi. Untuk 100 model, tanpa sleep adalah solusi yang paling sederhana.
Tabel Ringkasan:
• Steam: sleep 250ms. Error non-fatal. • GitHub: sleep 100ms. Error non-fatal. • HuggingFace: Tanpa sleep. Error non-fatal.
Interval sleep hanyalah sebuah perkiraan. Perlindungan yang sebenarnya adalah bagaimana saya menangani error. Setiap panggilan API menggunakan blok try/catch. Jika panggilan gagal, sistem akan menulis baris fallback alih-alih mengalami crash.
Interval sleep mengontrol seberapa sering Anda mencapai limit. Penanganan error mengontrol apa yang terjadi saat Anda mencapainya.
Komunitas belajar opsional: https://t.me/GyaanSetuAi
