Bunu Neden İnşa Ettim?
"Makine öğrenmesi modelleri devasa ve yapılandırılmış veri setlerine ihtiyaç duyar, ancak Jikan gibi açık API'ler katı rate-limit'lere ve öngörülemeyen bağlantı kesintilerine sahiptir. Saatlerce sürebilecek veri çekme (scraping) operasyonlarında sıfır veri kaybı yaşamak ve veri mühendisliği pipeline'ları için otonom bir şekilde ham veri toplamak adına bu dayanıklı altyapıyı tasarladım."
Mimari & Kararlar
Script tamamen Python üzerinde koşar; ağ I/O operasyonları için `requests`, veri yapılandırması için `pandas` kullanır. Çekirdek döngü, HTTP 429 (Too Many Requests) ve 5xx sunucu hatalarını absorbe edebilmek için randomize jitter ile desteklenmiş 'exponential backoff' algoritması uygular. Uzun süren memory-bound işlemlerde veya olası işletim sistemi çökmelerinde (crash) veri bütünlüğünü garanti etmek için, her sayfa (pagination) dönüşünde dosya tanımlayıcıları (file descriptors) düşük seviyeli `os.fsync()` sistem çağrısıyla doğrudan diske yazılmaya (flush) zorlanır. Standart çıktı (stdout), eşzamanlı olarak çok kanallı loglama sistemine yönlendirilmiştir.
Temel Özellikler
- 01.Randomize jitter eklenmiş exponential backoff algoritması ile agresif HTTP 429 rate-limit mitigasyonu
- 02.İşletim sistemi seviyesinde I/O senkronizasyonu (`os.fsync`) ile disk yazma işlemlerinin anında kalıcılığını garanti etme
- 03.ML 'feature engineering' süreçleri için optimize edilmiş, iki farklı derinlikte (ana metrikler vs. karmaşık entity ilişkileri) eşzamanlı CSV dışa aktarımı
- 04.Ağ kopmalarını ve parse edilemeyen bozuk JSON yanıtlarını izole eden otonom hata kayıt (error & unsaved logging) mekanizması