Python ile Pazaryeri XML Verilerini JSON'a Çevirme Kılavuzu

Senaryo: Gece Yarısı Stok Senkronu
Pazaryeri entegrasyon servisiniz her gece binlerce XML dosyası alıyor. Bu dosyaları JSON’a çevirip microservice’lere aktarmak zorundasınız. Hedef: veri kaybı olmadan, dakikalar içinde işlemek.
Görev 1 — XML Yapısını Haritalandır
Amaç:
Schema’yı anlamadan adım atma.
- Pazaryerinin dökümanından XSD/şema dosyasını indirip `xmlschema` kütüphanesi ile doğrula.
- Kritik alanlar (stok, fiyat, varyant id) için required alan listesini çıkar.
- Şemadaki maxOccurs/minOccurs değerlerini not al; JSON modeline birebir yansıt.
Görev 2 — Hızlı Dönüşüm için xmltodict Kullan
Amaç:
XML’i Python objesine zahmetsiz çevir.
- `pip install xmltodict` sonrası `xmltodict.parse()` ile feed’i OrderedDict olarak al.
- Büyük dosyalar için `xmltodict.parse(stream, item_depth=2, item_callback=...)` yapısını kullanarak chunk bazlı dönüştür.
- Attribute’ları (`@`) ve metin alanlarını (`#text`) normalize eden küçük yardımcı fonksiyon yaz.
Görev 3 — Pydantic ile JSON Modelini Sigortala
Amaç:
Tip güvenliğini elden bırakma.
- `BaseModel` sınıflarıyla ürün, varyant, fiyat gibi modeller tanımla.
- `ConfigDict(extra="forbid")` kullanarak beklenmeyen alanlara karşı önlem al.
- Dönüştürülen veriyi `model_validate()` ile çalıştır, hatalı kayıtları ayrı kuyruğa at.
Görev 4 — Performans için Async Pipeline
Amaç:
On binlerce ürünü dakikalar içinde işlemek.
- `asyncio` + `aiofiles` ile XML dosyalarını eş zamanlı oku.
- Dönüştürdüğün JSON paketlerini `asyncio.Queue` üzerinden worker’lara dağıt; her worker REST API’ye veya Kafka’ya push etsin.
- CPU kullanımını düşürmek için `orjson` ile serileştirme yap.
Görev 5 — Loglama ve Geri Alma Planı
Amaç:
Hatalı dönüşümleri iz bırakmadan yakalamak.
- Her dosya için checksum hesaplayıp logla; JSON çıktısında aynı checksum’ı sakla.
- Sıradışı durumlarda (eksik fiyat, negatif stok) otomatik alarm üretip dosyayı quarantine klasörüne taşı.
- Başarısız kayıtları yeniden işlemek için Celery/Redis tabanlı retry mekanizması kur.
Bonus — Otomatik Test ve Örnek Repo
Scriptlerini GitHub Actions ile test et; örnek XML dosyalarını repo içinde `fixtures/` klasöründe bulundur. Her pull request’te XML → JSON dönüşümünü doğrulayan unit ve snapshot testleri çalıştır. Böylece yeni pazaryeri eklemek dakikalar sürer.
Sonraki Adımlar
Entegrasyon projelerinizde benzer bir stratejiyle ilerlemek istiyorsanız bizimle iletişime geçin. SEO, performans ve operasyon süreçlerini birlikte optimize edelim.
💬 WhatsApp ile İletişime Geç