• Toplam: 0 Oy - Ortalama: 0
  • 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ş Smilepython.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



Ara
Cevapla

 
#2

güzel paylaşım



Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Aurelia Framework blueman 0 1,183 30-08-2017, Saat: 15:18
Son Yorum: blueman

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2020 MyBB Group.  



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