Pemrosesan bertahap bukan langganan kejadian langsung

Dapatkan kunci API

Definisikan jendela sebagai pekerjaan lokal

Reddit Stream API adalah arsip historis independen, bukan aliran SSE atau WebSocket. Menjalankan kueri secara berkala tidak berarti kejadian Reddit terbaru akan segera tersedia. Jadwal pembaruan arsip dan ketetapan hasil tidak dijamin. Bertahap di sini berarti membagi pekerjaan klien menjadi langkah yang dapat dicatat. Ini bukan kursor kejadian, jaminan pengiriman, atau daftar perubahan lengkap dari server. Jelaskan hasil kepada pengguna sebagai rekaman arsip yang benar-benar diterima, bukan sebagai aktivitas langsung yang dipantau terus-menerus.

Jika cocok untuk pekerjaan Anda, gunakan from dan to pada /v1/search atau /v1/posts. Nilainya berbentuk YYYY-MM-DD dalam UTC dan to mencakup seluruh hari. Ketika menyusun tugas harian, jangan memakai tanggal akhir sebagai tanggal awal berikutnya tanpa memperhitungkan tumpang tindih yang Anda buat sendiri. Format ini tidak menyediakan ketepatan waktu hingga detik. Pembagian yang rapi membantu mengatur pekerjaan tetapi tidak membuktikan bahwa setiap hari atau seluruh rekaman yang cocok tersedia dalam arsip.

Partisi berdasarkan waktu juga memudahkan pelacakan logika bisnis dan penelusuran masalah karena setiap jendela waktu dapat dilacak secara independen. Anda dapat memprioritaskan ekstraksi berdasarkan periode dengan aktivitas tinggi atau tanggal peristiwa spesifik. Penting untuk diingat bahwa urutan dokumen dalam respons bukan urutan kronologis, sehingga pengurutan di sisi klien mungkin diperlukan untuk analisis waktu yang akurat. Pengurutan lokal hanya menata rekaman yang sudah diterima; rekaman yang tidak diambil tetap tidak diketahui. Jangan memakai tanggal rekaman terakhir sebagai bukti bahwa seluruh waktu sebelumnya sudah selesai dikumpulkan.

Halaman, penyimpanan, dan kelanjutan

Contoh halaman adalah https://api.redditstreamapi.com/v1/posts?subreddit=datasets&limit=3&page=2. Maksimal 100 halaman per kueri dan 100 rekaman per permintaan tersedia sebagai batas, bukan kewajiban memilih limit tertinggi. Sesuaikan limit dengan kebutuhan pengujian dan pemrosesan. Nomor halaman memilih bagian menurut urutan arsip; itu bukan kursor kelanjutan yang tetap atau cap waktu. Contoh tidak menjamin adanya halaman kedua maupun tiga hasil. Memulai ulang dari nomor tersimpan juga tidak menjamin snapshot yang sama.

Untuk setiap percobaan, simpan kondisi kueri, halaman, waktu, status HTTP, dan hasil penulisan lokal. Jika respons berhasil tetapi penulisan gagal, menaikkan penanda halaman dapat melewati data yang belum tersimpan. Periksa berkas atau basis data lokal sebelum mengulang atau melanjutkan. Catatan kemajuan adalah milik aplikasi, bukan janji server tentang kelanjutan tanpa kehilangan. Tetapkan kondisi berhenti dan bedakan pekerjaan yang dihentikan karena batas halaman dari pekerjaan yang selesai mengolah hasil yang benar-benar diterima.

Urutan dokumen bukan waktu, relevansi, atau skor. min_score hanya menerapkan ambang minimum. eq menunjukkan total tepat, gte batas bawah, dan unknown atau null total tepercaya yang tidak diketahui; satuannya rekaman. Total tepat tidak membuktikan penyimpanan lengkap. Pengelompokan parent_id dan link_id bersifat pilihan untuk hubungan, bukan syarat membaca atau menghitung, dan tidak memulihkan induk yang hilang. Membagi tanggal serta deduplikasi lokal tidak membuktikan cakupan lengkap atau hasil unik dari seluruh arsip.

Kredensial, kesalahan, dan anggaran

Gunakan Authorization: Bearer YOUR_API_KEY atau X-API-Key: YOUR_API_KEY; keduanya membawa kunci arsip domain ini, bukan token OAuth Reddit. Simpan nilai asli di server dan keluarkan dari log. 400 memerlukan koreksi parameter, 401 pemeriksaan kunci, 402 pemeriksaan saldo, dan 429 pengurangan frekuensi serta jeda. Tentukan batas percobaan pada klien dan jangan menghindari pembatasan dengan akun lain. Sesi akun pada browser tidak membuktikan bahwa pekerjaan mengirim header yang benar.

Setiap pengambilan berhasil, termasuk kosong, memakai satu kredit; tarifnya $1 per 1.000 keberhasilan. Permintaan tidak valid tidak didebit dan kegagalan sistem hulu mengembalikan kredit cadangan. Kehilangan respons di klien tidak membuktikan kegagalan server. Jika server sudah berhasil, pengulangan yang berhasil dapat memakai kredit lagi. Batasi percobaan berdasarkan status penyimpanan dan anggaran. Sifat baca saja tidak menjamin hasil identik atau pengulangan gratis. Mengolah respons lokal dan meminta arsip kembali merupakan tindakan berbeda.

/v1/status publik dan tanpa biaya hanya menunjukkan cakupan statis serta respons HTTP. Jalur tersebut tidak memeriksa pencarian, rekaman, kunci, atau saldo. Jangan menandai pengambilan selesai hanya dari respons status. Laporan pekerjaan sebaiknya menyebut halaman yang dicoba, hasil yang tersimpan, alasan berhenti, dan ketidakpastian cakupan. Laporan ini tidak membuktikan kelengkapan, ketetapan, atau penyimpanan permanen arsip. Pertimbangkan hukum yang berlaku dan hak pihak ketiga ketika mengolah atau menampilkan hasil yang telah diterima.