Jikan API Scraper: Hata Toleranslı ML Veri Seti Üreticisi
Makine öğrenmesi (ML) modellerini eğitmek amacıyla MyAnimeList veritabanını otonom olarak tarayan; exponential backoff ve düşük seviyeli disk I/O flush mekanizmalarına sahip, hata toleranslı veri hasadı (data harvesting) motoru.
Teknoloji yığını
Performans & metrikler
- Devasa veri setini tek seferde RAM'e yüklemek yerine 'chunked append' stratejisi kullanılarak memory ballooning (bellek şişmesi) riskinin sıfırlanması
- Geçici HTTP yanıtı objelerinin işlendikten hemen sonra garbage collection'a bırakılmasıyla stabil bellek tüketimi
- Thread bloklanmalarını önlemek için dinamik bekleme (sleep) sürelerinin API'nin anlık tepki durumuna göre hesaplanması
Neden geliştirdim?
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
- 01Randomize 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 - 03ML '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ı
- 04Ağ kopmalarını ve parse edilemeyen bozuk JSON yanıtlarını izole eden otonom hata kayıt (error & unsaved logging) mekanizması
Teknik değerlendirme
Bu proje basit bir web scraper'dan ziyade, dayanıklı bir veri mühendisliği hattı (data ingestion pipeline) olarak kurgulanmıştır. İşletim sistemi seviyesinde disk senkronizasyonu (fsync) ve detaylı exception hiyerarşisi sayesinde, script API zaman aşımlarını, bağlantı sıfırlamalarını ve katı throttling limitlerini insan müdahalesine gerek kalmadan atlatır. Ana tablo ve detay tablosu (ilişkisel ağlar) şeklinde yapılan ayrım, toplanan verinin Pandas/Polars tabanlı model eğitim ortamlarına doğrudan (preprocessing yükü olmadan) entegre edilebilmesi için önceden optimize edilmiştir.