• 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
falcon framework

 
#1

Selam. Bu yazıda size Python frameworklerinden bir diğerini, falcon framework’ü tanıtacağım. Kendi sitesindeki hız testlerinde bir hayli iyi olduğu belirtilmekte. Özellikle PyPy3.5 için 126 kat hızlı olduğunu söylemiş Smile[Resim: python.png]
Öncelikle Falcon için bilgilere ulaşabileceğiniz iki adresi vereyim.
Resmi Site: https://falconframework.org/
Doküman Sitesi: https://falcon.readthedocs.io/en/stable/
Kısa Bilgi
Falcon, minimalist takılan, yüksek performanslı bi web framework. Özellikle RESTful servisler ve uygulama backendlerinı Python ile oluşturmak isteyenler için düşünülmüş.
Ayrıca falcon, herhangi bir WSGI containerı ile çalışabilecek kadar uysalmış. PEP-3333 ile geliştirilmiş. Söylemek gerekiyor PEP-3333, WSGI için bir standart.
Falcon kendi söylemiyle yalındır. Öyle herkesin kullanacağı bir şey değil. Genellikle HTTP APIlarına kendisini odaklamış durumda. Bu da şu anlama gelebilir. Kardeş sen burada built-in template engine, form helper ya da ORM bulamazsın.
Falcon olabildiğince yalın demiştim. Yani bağımlılık konusunda da öyle six ve mimeparse adında iki kütüphane haricinde bağımlılığı yok.
Kurulum
Kurulum basit şekilde gerçekleşiyor:
Kod:
$ pip install falcon

# Eğer yoksa gunicorn

$ pip install gunicorn

İlk Uygulamamız
Kod:
# -*- coding: utf-8 -*-
import falcon
import json

class OzluSozler:
 def on_get(self, req, resp):
     """Bu metod özlü sözler döndürecek"""
     sozler = [
         {
           'soz': 'Hayatta en hakiki mürşit ilimdir',
           'soyleyen': 'Mustafa Kemal Atatürk'
         },
         {
           'soz': 'Biz, oldukça ortalama bir yıldızın '
           'ufak bir gezegenindeki gelişmiş sanat eseriyiz '
           'Fakat evreni anlayabiliyoruz.'
           'İşte bu bizi çok özel kılıyor',
           'soyleyen': 'Stephen Hawking'
         }
     ]

     resp.body = json.dumps(sozler)

app = falcon.API()
app.add_route('/sozler', OzluSozler())

Ardından 
Kod:
gunicorn main:app --reload

 komutunu vererek çalıştırabiliriz. Burada main dosya adı, app ise uygulama içinde falcon’u kim çağırıyor ne çağırıyor ise o. Başlangıç için bu basit örnek yeterli gibi geliyor bana.

Biraz Daha Detay
Biraz daha detay verecek olursak istersek queryleri yakalayabiliriz. Yine aynı örnek üzerinden gideceğiz bu arada.
Kod:
class OzluSozler:
 def on_get(self, req, resp):
     """Bu metod özlü sözler döndürecek"""
     sozler = [
         {
           'soz': 'Hayatta en hakiki mürşit ilimdir',
           'soyleyen': 'Mustafa Kemal Atatürk'
         },
         {
           'soz': 'Biz, oldukça ortalama bir yıldızın '
           'ufak bir gezegenindeki gelişmiş sanat eseriyiz '
           'Fakat evreni anlayabiliyoruz.'
           'İşte bu bizi çok özel kılıyor',
           'soyleyen': 'Stephen Hawking'
         }
     ]

     api_version = req.get_param('v')
     
     if api_version:
       resp.body = json.dumps(sozler)
     else:
       hata = {'hata': 'Version bilgisi gereklidir'}
       resp.status = "400"
       resp.body = json.dumps(hata)

Yukarıdaki kodda eğer url 
Kod:
localhost/sozler

 şeklinde çağırılırsa hata oluşacaktır. Eğer ki query string türünden v verilirse hatasızca çalışacaktır. Hatta işi biraz daha ilerletip, belirli sözleri özellikle seçtirebiliriz. Bunun için q adında bir query daha tanımlayalım.

Kod:
api_version = req.get_param('v')
quote_no = req.get_param('q')
soz = sozler

if api_version:
   try:
       if quote_no:
           soz = sozler[int(quote_no)]
       resp.body = json.dumps(soz)
   except:
       hata = {'hata': 'Böyle bir söz bulunamadı'}
       resp.status = "400"
       resp.body = json.dumps(hata)
else:
   hata = {'hata': 'Version bilgisi gereklidir'}
   resp.status = "400"
   resp.body = json.dumps(hata)

Yukarıdaki gibi olacaktır. Böyle içe doğru uzanan if kullanımı hoş değil ancak bu yazıda mükemmel kullanıma da gerek yok. Bu arada on_get metodunu kullanarak bu API endpoindinin sadece GET isteklerinde kullanılabilir olduğunu belirttik.
Şu an için bu kadar. Falcon sadece bu kadar değil. Diğer konuları en başta verdiğim konudan alabilirsiniz Smile



Bul
Alıntı

 
#2

güzel paylaşım



Bul
Alıntı


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Aurelia Framework blueman 0 1,850 30-08-2017, Saat: 16:18
Son Mesaj: blueman

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Bu konuyu görüntüleyen kullanıcı(lar):
1 Ziyaretçi

   
Türkçe Çeviri: Emre KRMN, Kodlayanlar MyBB, © 2002-2024 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-∞ Tüm hakları saklıdır.