Template Engine (Jinja2 vs Mako)

Jinja2 ve Mako; Python projelerinde kullanımı en yaygın olan template engine modülleridir. Özellikle HTML, YAML gibi scriptlerde tekrarlı yada belirli kurallara göre üretilen scriptin dinamik olarak üretilmesine imkan sunarlar. Ancak bunları kullanmak için template’inizin herhangi bir syntax yapısına sahip bir script olması zorunlu değildir. Modüllerdeki ön tanımlı yapılarla çakışmayan herhangi bir text, template olarak kullanılabilir. Okumaya devam et

Apache Airflow – 3 (Multi Task)

Airflow’u yalnızca sequential (sıralı) bir akış (DAG) yaratmak için kullanmak yüksek hacimli iş akışı içeren bir ortamda verimsiz olacaktır. Bu nedenle; “Paralel süreçlerin de tanımlanabildiği bir yapının kurulması ve işletilmesi nasıl olur?” sorusu oldukça önemlidir. Bu noktada Airflow executor çeşitleri ile farklı alternatifler sunmaktadır. Okumaya devam et

Apache Airflow – 2 (Single Task)

Airflow’da bir akış tanımlamak için Python dilinin tercih edilmiş olması veri özelinde oldukça değerli bir durum. Python projesinin içine apache-airflow modülünü install edip ardından kullanılacak dosyaya import edilmesi DAG tanımlamaya başlamak için yeterli olacaktır. Okumaya devam et

Apache Airflow – 1 (Quickstart)

Airflow’un kendi sayfasında da yaptığı tanım konuyu anlamak  adına oldukça yeterli: “Airflow bir data streaming ürünü değildir. Task’lar verileri birinden diğerine taşımaz (ancak meta veri alışverişinde bulunabilir!). Airflow’u; Spark Streaming veya Storm ile değil, Oozie veya Azkaban ile karşılaştırmak daha doğru olacaktır.”. Ne olduğunu bilmek kadar ne olmadığını bilmekte önemlidir. 😉 Okumaya devam et

Apache Superset

Veriyi ilk bakışta anlamlandırmak her zaman mümkün olmayabilir özellikle hacimli boyutlara ulaşınca bunu kolaylaştırmanın tek yolu onu anlamlı bir görsele dönüştürmektir. Veri görselleştirme için açık kaynak kodlu olarak sunulan Apache Superset‘te v1 duyurusuyla birlikte oldukça iyi bir alternatife dönüşmüş durumda, peki nasıl kurulur ve kullanılır? Okumaya devam et

Rest in Python – 5 (ORM with SQLAlchemy)

Veri tabanı üzerinde çalışan kod parçalarında sql sorguları bulunması bir çok açıdan doğru olmayan bir yaklaşımdır. SQL Injection dahil fazlaca açık kapı bırakmak bir yana nesne tabanlı geliştirme yapmak noktasında da sorunlu bir durum yaratır. Bu sorunsalı aşmak için bir çok dilde veri tabanı işlemlerinde erişim yöntemi olarak ORM (Object Relational Mapping) kullanılır. Python’da da bu mantığı kullanmak için en yaygın kütüphane SQLAlchemy kütüphanesidir. Okumaya devam et

Rest in Python – 2 (Python Requests)

Python ile bir REST API’ye HTTP request gönderebilmek için requests kütüphanesi kullanılır. Bu yazıda, önceki yazıda postman ile gerçekleştirilen request işlemlerinin Python ile nasıl gerçekleştirileceği işlenecektir. Kodlara ekran görüntüsü olarak ve github üzerindeki ilgili proje repositorysinden Python kodu olarak erişilebilir. Okumaya devam et

Rest in Python – 1 (HTTP, API, REST)

HTTP (Hyper Text Transfer Protocol) server ile client arasındaki iletişimi sağlamak için tasarlanmış bir haberleşme protokolüdür. Client, server tarafına bir request gönderir ve bu içeriğine göre serverda bir karşılık bulur ardından server bu işlem için client’a bir response döner. HTTP’nin temel çalışma prensibi bu kadar basittir. Aradaki bu iletişim sürecinde belirli metotlar kullanılır. Bu metotlara dönen yanıtlar(içerikler) ve statü bilgileri vardır. Okumaya devam et