cemirfw
Python ve PyPy için hepsi bir arada, hafif bir web çatısı denemesi.
cemirfw, Python ve PyPy üzerinde çalışması hedeflenen, web servisi yazmak için gereken temel parçaları tek pakette toplamaya çalışan bir çatı (framework) denemesi. PyPI'da "Python ve PyPy için hepsi bir arada çatı" açıklamasıyla, 2024 yılının Haziran ayında tek bir sürüm olarak yayınlandı. PyPy, Python kodunu çoğu durumda standart yorumlayıcıdan daha hızlı çalıştıran alternatif bir Python yorumlayıcısı.
Amaç
Küçük API'ler yazarken her seferinde yönlendirme, parametre kontrolü, önbellekleme, kimlik doğrulama ve veritabanı erişimi için ayrı ayrı kütüphaneler bir araya getirmem gerekiyordu. cemirfw ile bu parçaları tek bir yapı altında toplamayı ve bir uç noktayı birkaç satırlık bir fonksiyonla tanımlayabilmeyi amaçladım. Çatının bir sistem servisi olarak kurulup yönetilmesi de baştan hedefin bir parçasıydı.
Nasıl çalışır
README'deki örneklere göre uç noktalar, HTTP yöntemine karşılık gelen get ve put gibi dekoratörlerle tanımlanıyor. Dekoratöre adresle birlikte kimlik doğrulamanın gerekip gerekmediği ve Redis önbellek ayarları veriliyor. Önbellek ayarlarında kaydın kaç saniye tutulacağı ve önbellek anahtarının hangi bilgilerden, örneğin istemcinin IP adresi ve tarayıcı bilgisinden oluşturulacağı belirtiliyor. check_params dekoratörü, istekte zorunlu parametrelerin bulunup bulunmadığını fonksiyon çalışmadan önce kontrol ediyor. Uç nokta fonksiyonları async olarak yazılıyor.
Veritabanı tarafında iki yol gösteriliyor. Birincisi db_query fonksiyonuyla doğrudan SQL sorgusu çalıştırmak. İkincisi Tablo sınıfıyla zincirlenebilen bir sorgu oluşturucu kullanmak. Bu sınıfla kayıt eklemek, güncellemek, silmek ve seçmek mümkün. Seçim yaparken eşitlik, eşit olmama, belirli bir metinle başlama, bitme ve içermeme gibi koşullar ile sıralama zincirleme olarak ekleniyor.
Kurulum bir kabuk betiğiyle yapılıyor. Kurulumdan sonra cemirfw start, stop, restart, status ve disable komutlarıyla servis başlatılıp durdurulabiliyor ve durumu izlenebiliyor.
Öne çıkan özellikler
- Uç noktalar dekoratörlerle, kısa ve okunur biçimde tanımlanıyor.
- Redis önbelleği ve önbellek anahtarının nasıl oluşturulacağı her uç nokta için ayrı ayrı ayarlanabiliyor.
- Zorunlu parametre kontrolü bir dekoratörle yapılıyor.
- Basit veritabanı işlemleri için zincirlenebilen bir sorgu oluşturucu bulunuyor.
Teknik altyapı
PyPI'daki paket tanımına göre çatı, Python'un asenkron web sunucusu ve ağ kütüphanesi olan Tornado'ya dayanıyor. Paket bilgilerinde Python 3.6 ile 3.9 arası sürümler listelenmiş ve paket MIT lisansıyla dağıtılıyor.
Durum
cemirfw bir deneme olarak kaldı ve 2024'teki ilk sürümden sonra güncellenmedi. PyPI'da yayınlanan paket yalnızca README ve kurulum bilgilerini içeriyor, çatının kaynak kodu pakette bulunmuyor. Bu yüzden paketi kurmak tek başına çatıyı kullanmaya yetmiyor; yukarıdaki anlatım README'deki örneklere dayanıyor.
Kullanım alanları
- Fikir olarak, az sayıda uç noktası olan iç servisleri ve küçük API'leri hızlıca ayağa kaldırmak için tasarlandı.
- Önbellekli okuma uç noktaları ve basit tablo işlemleri yapan servisler hedeflendi.
- Sunucuda sistem servisi olarak çalışacak, komut satırından yönetilen hafif web uygulamaları için düşünüldü.
- Kategori
- Python kütüphaneleri
- Yıl
- 2024
Teknolojiler
- Python
- PyPy
- PyPI
- Web Framework
Bağlantılar
- PyPI https://pypi.org/project/cemirfw/