Tiga Selang Masa Tidur untuk Tiga API

Saya membina saluran paip ETL untuk tiga laman direktori pada bulan April. Setiap laman menggunakan API yang berbeza: Steam, GitHub, dan HuggingFace.

Saya perlu menetapkan selang masa tidur untuk setiap satu. Angka, mod kegagalan, dan pengendalian ralat semuanya berbeza. Berikut adalah apa yang saya gunakan dan sebabnya.

Steam: tidur 250ms

Dokumentasi Steam adalah samar tentang had kadar (rate limits). Data komuniti mencadangkan kira-kira 200 permintaan setiap 5 minit bagi setiap IP. Ini bermakna selang 1.5 saat adalah selamat.

Saya menggunakan 250ms sebagai ganti. Tugasan malam saya hanya memproses 60 entri permainan. Pada 250ms, jumlah masa tidur adalah 15 saat. Pada 1.5 saat, ia menjadi 90 saat. Menjimatkan masa adalah penting apabila anda memproses pelbagai laman.

Jika Steam mengembalikan ralat, tugasan tersebut tidak akan berhenti. Ia akan merekodkan ralat tersebut dan beralih ke item seterusnya. Data akan dikemas kini pada malam berikutnya.

GitHub: tidur 100ms

GitHub sangat jelas. Pengguna tanpa pengesahan mendapat 60 permintaan sejam. Pengguna dengan token mendapat 5,000 permintaan sejam.

Saya menggunakan tidur 100ms sebagai langkah kesopanan. Token melakukan kerja berat untuk had kadar tersebut. Saluran paip saya menggunakan REST API teras, bukan API carian. Ini membolehkan had yang jauh lebih tinggi.

HuggingFace: Tiada tidur

Saya tidak pernah mencapai had kadar dalam minggu-minggu larian malam. registry API direka untuk alatan berkelompok (batch tools) seperti milik saya.

Saya mengambil sehingga 100 model sekaligus. Saya menggunakan token pengesahan untuk meningkatkan had dengan lebih tinggi lagi. Untuk 100 model, tanpa tidur adalah penyelesaian yang paling mudah.

Jadual Ringkasan:

• Steam: tidur 250ms. Ralat bukan maut (non-fatal errors). • GitHub: tidur 100ms. Ralat bukan maut (non-fatal errors). • HuggingFace: Tiada tidur. Ralat bukan maut (non-fatal errors).

Selang masa tidur hanyalah satu tekaan. Perlindungan sebenar adalah cara saya mengendalikan ralat. Setiap panggilan API menggunakan blok try/catch. Jika panggilan gagal, sistem akan menulis baris sandaran (fallback row) dan bukannya terhenti (crashing).

Selang masa tidur mengawal kekerapan anda mencapai had. Pengendalian ralat mengawal apa yang berlaku apabila anda mencapainya.

Sumber: https://dev.to/morinaga/three-sleep-intervals-for-three-apis-steam-250ms-github-100ms-huggingface-none-4ga7

Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi