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 – 4 (Build Rest with Flask)
REST API nasıl kullanılır sorusuna bu serinin ilk yazılarında kullanışlı olabilecek örneklerle değinildi. Peki kullanılan REST servisleri nasıl yazılır? Python bunun için de birden fazla seçenek sunmakla beraber en popüler ve efektif çözüm olan Flask ile ilerlemek en doğrusu olacaktır. Okumaya devam et
Rest in Python – 3 (Rest to Postgre)
REST API‘den çekilen verinin PostgreDB‘ye nasıl aktarılabileceğine dair örnek bir Python uygulaması nasıl yazılır? Bu soru cevaplanırken bir önceki yazıda öğrenilen requests kütüphanesi ve PostgreDB bağlantısı içinde psycopg2 kütüphanesi kullanılacaktır. 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