SlideShare una empresa de Scribd logo
1 de 18
TORNADO
PYTHON WEB FRAMEWORK
SELÇUK USTA
Sr. Software Developer
@hurriyet.com.tr
linkedin.com/in/selcukusta
medium.com/@selcukusta
twitter.com/ustasoglu
İÇERİK
- TORNADO’YA 5NYAKLAŞIMI
- 4 ANAHTAR MODÜL
- C10K PROBLEMİ & PERFORMANS
- ASENKRON KÜTÜPHANELER
V4.4.2 / 01.10.2016
V4.4.2 / 01.10.2016
1
TORNADO’YA 5N
YAKLAŞIMI
TORNADO NEDİR, NE DEĞİLDİR?
- Açık Kaynak Kodlu (Apache v2.0
Lisansı ile)
- Ölçeklenebilir,
V4.4.2 / 01.10.2016
- Asenkron / Non-blocking Networking
Kütüphanesi
- Micro Web Framework
- Full-Stack Web Framework
+ Django
+ Laravel
+ ASP.NET MVC
- Front-end Web Sunucusu
+ Nginx, Apache gibi reverse-proxy HTTP sunucularının
arkasında çalışır
TORNADO NE ZAMAN
ORTAYA ÇIKTI?
V4.4.2 / 01.10.2016
2009 yılında Friendfeed tarafından geliştirildi.
2009 yılında Friendfeed, Facebook tarafından satın
alındı.
Kısa bir süre sonra, Facebook tarafından açık
kaynaklı olarak community’e sunuldu.
TORNADO NEREDE
KULLANILIR?
V4.4.2 / 01.10.2016
- API Uygulamaları
- Hürriyet CMS
- Hürriyet Okunurluk Servisi
- Long-lived bağlantı gerektiren (WebSocket) canlı uygulamalar
- Quora.com (Live feed)
- Bazı bahis siteleri 
- Mikro web uygulamaları
- Hürriyet Image Uygulaması
- bitly.com
TORNADO NASIL KURULUR
&YÖNETİLİR?
V4.4.2 / 01.10.2016
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
Python 2.7, 3.3+
KUR
> pip install tornado
KODLA
YÖNET
V4.4.2 / 01.10.2016
2
4 ANAHTAR
MODÜL
WEB FRAMEWORK
V4.4.2 / 01.10.2016
Asenkron özelliklerle destekli basit web modülleri
tornado.web tornado.template tornado.escape tornado.locale tornado.websocket
(C) RequestHandler
(C) Application
Dekoratörler
Çıktı üreticisi Metin değişiklikleri
Escape Fonksiyonalitesi
Unicode Dönüşümleri
Global değişimler (metin,
para birimi, sayısal ifadeler,
vs...)
Tarayıcı ile asenkron
iletişimler
HTTP SERVERS & CLIENT
V4.4.2 / 01.10.2016
HTTP Client/Server-side implementasyonu
tornado.httpserver tornado.httpclient tornado.httputil tornado.http1connection
Bloklanmayan, tekil iş-
parçacıklı (thread) HTTP
Server nesnesi
Senkron/Asenkron destekli HTTP
Client nesnesi
Request özellikleri
Response özellikleri
İstek hatalarının yönetilmesi
HTTP isteklerine ait özelliklerin
(header, cookie, vs...)
özelleştirilmesi
HTTP/1.x client/server implementasyonu
(>v4.0)
ASYNCHRONOUS NETWORKING
V4.4.2 / 01.10.2016
Asenkron Sunucu İşlemesi
tornado.ioloop tornado.iostream tornado.netutil tornado.tcpclient tornado.tcpserver
Asenkron sunucu
yönetiminin merkez üssü
Kullanıma hazır
handler’ların listesini tutan
kütüphane
Socket polling mekanizması
select.epoll() &
select.select()
Stream nesnelerinin
asenkron yönetimi
Socket bağlantılarının
(bloklanmayan) yönetimi
Client seviyesindeTCP
bağlantılarının
(bloklanmayan) yönetimi
Server seviyesindeTCP
bağlantılarının
(bloklanmayan) yönetimi
COROUTINES AND CONCURRENCY
V4.4.2 / 01.10.2016
Asenkron İşlemlerinYönetimi
tornado.gen tornado.concurrent tornado.queues tornado.process
Asenkron işlemlerin merkez
üssü
İş parçacıklarının (thread) ve
callback’lerin yönetimi
Asenkron işlemlerin
üreticilerinin (fonksiyonlar)
ve tüketicilerinin (çağrılar)
yönetimi
Multi-tasking işlemlerin
yönetimi
V4.4.2 / 01.10.2016
3
C10K PROBLEMİ &
PERFORMANS
C10K PROBLEMİ &
PERFORMANS
V4.4.2 / 01.10.2016
Eşzamanlı (concurrent) 10.000 bağlantının
karşılanabilmesi sorunsalı
Pub/sub sunucuları, chat uygulamaları, dosya
sunucuları, yüksek stres altındaki web sunucuları
İstek işlemek ≠ Bağlantı karşılamak
C10K PROBLEMİ &
PERFORMANS
V4.4.2 / 01.10.2016
8213
3353
2223 2066
785
TORNADO (NGNIX; 4
FRONTENDS)
TORNADO (1 SINGLE-
THREADED
FRONTEND)
DJANGO
(APACHE/MOD_WSGI)
WEB.PY
(APACHE/MOD_WSGI)
CHERRYPY
(STANDALONE)
WEB SERVER REQUESTS/SEC (AMD OPTERON, 2.4 GHZ, 4 CORES)
Facebook Blog (09/2009)
V4.4.2 / 01.10.2016
4
ASENKRON
KÜTÜPHANELER
ASENKRON
KÜTÜPHANELER
V4.4.2 / 01.10.2016
toredis
pika
corduroy
motor
momoko
asyncdynamo
V4.4.2 / 01.10.2016

Más contenido relacionado

Similar a Hürriyet BBS - Tornado (Python Web Framework)

Windows Server App Fabric Introduction
Windows Server App Fabric IntroductionWindows Server App Fabric Introduction
Windows Server App Fabric IntroductionBurak Selim Senyurt
 
ASP.NET MVC 4 - Mahmut Can Sozeri Sunum
ASP.NET MVC 4 - Mahmut Can Sozeri SunumASP.NET MVC 4 - Mahmut Can Sozeri Sunum
ASP.NET MVC 4 - Mahmut Can Sozeri SunumGazi University
 
PHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
PHP ve NATS ile
 Mikroservis Mesajlaşma SistemiPHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
PHP ve NATS ile
 Mikroservis Mesajlaşma SistemiErhan Yakut
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciSinan Bozkuş
 
Php teknikeri
Php teknikeriPhp teknikeri
Php teknikerisersld89
 
Dogus University-Web Application Security
Dogus University-Web Application SecurityDogus University-Web Application Security
Dogus University-Web Application Securitymtimur
 
C sharp-sitesi
C sharp-sitesiC sharp-sitesi
C sharp-sitesisersld30
 
Php kursu-sancaktepe
Php kursu-sancaktepePhp kursu-sancaktepe
Php kursu-sancaktepesersld88
 
Mobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
Mobil Cihaz Uygulamalarında Sql Server Ce KullanımıMobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
Mobil Cihaz Uygulamalarında Sql Server Ce Kullanımıekinozcicekciler
 
Nginx ve Unicorn'la Rack Uygulamalarını Koşturmak
Nginx ve Unicorn'la Rack Uygulamalarını KoşturmakNginx ve Unicorn'la Rack Uygulamalarını Koşturmak
Nginx ve Unicorn'la Rack Uygulamalarını KoşturmakUğur Özyılmazel
 
Php kursu-ankara
Php kursu-ankaraPhp kursu-ankara
Php kursu-ankarasersld88
 
JavaScript ile Taş Kırmak
JavaScript ile Taş KırmakJavaScript ile Taş Kırmak
JavaScript ile Taş Kırmakİbrahim ATAY
 
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)Kamil Çömlekçi
 
Javascript kursu-ankara
Javascript kursu-ankaraJavascript kursu-ankara
Javascript kursu-ankarasersld61
 
IPv6 Geçiş Tecrübeleri
IPv6 Geçiş TecrübeleriIPv6 Geçiş Tecrübeleri
IPv6 Geçiş TecrübeleriVolkan Oransoy
 

Similar a Hürriyet BBS - Tornado (Python Web Framework) (20)

Windows Server App Fabric Introduction
Windows Server App Fabric IntroductionWindows Server App Fabric Introduction
Windows Server App Fabric Introduction
 
sunu (Asp.net -1)
sunu (Asp.net -1)sunu (Asp.net -1)
sunu (Asp.net -1)
 
ASP.NET MVC 4 - Mahmut Can Sozeri Sunum
ASP.NET MVC 4 - Mahmut Can Sozeri SunumASP.NET MVC 4 - Mahmut Can Sozeri Sunum
ASP.NET MVC 4 - Mahmut Can Sozeri Sunum
 
Web service
Web serviceWeb service
Web service
 
Web Socket
Web SocketWeb Socket
Web Socket
 
PHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
PHP ve NATS ile
 Mikroservis Mesajlaşma SistemiPHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
PHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
 
Ajax
AjaxAjax
Ajax
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
 
Php teknikeri
Php teknikeriPhp teknikeri
Php teknikeri
 
Dogus University-Web Application Security
Dogus University-Web Application SecurityDogus University-Web Application Security
Dogus University-Web Application Security
 
C sharp-sitesi
C sharp-sitesiC sharp-sitesi
C sharp-sitesi
 
Php kursu-sancaktepe
Php kursu-sancaktepePhp kursu-sancaktepe
Php kursu-sancaktepe
 
Mobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
Mobil Cihaz Uygulamalarında Sql Server Ce KullanımıMobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
Mobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
 
Nginx ve Unicorn'la Rack Uygulamalarını Koşturmak
Nginx ve Unicorn'la Rack Uygulamalarını KoşturmakNginx ve Unicorn'la Rack Uygulamalarını Koşturmak
Nginx ve Unicorn'la Rack Uygulamalarını Koşturmak
 
Php kursu-ankara
Php kursu-ankaraPhp kursu-ankara
Php kursu-ankara
 
JavaScript ile Taş Kırmak
JavaScript ile Taş KırmakJavaScript ile Taş Kırmak
JavaScript ile Taş Kırmak
 
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
 
Javascript kursu-ankara
Javascript kursu-ankaraJavascript kursu-ankara
Javascript kursu-ankara
 
IPv6 Geçiş Tecrübeleri
IPv6 Geçiş TecrübeleriIPv6 Geçiş Tecrübeleri
IPv6 Geçiş Tecrübeleri
 
ASPNET Web API
ASPNET Web APIASPNET Web API
ASPNET Web API
 

Hürriyet BBS - Tornado (Python Web Framework)

  • 1. TORNADO PYTHON WEB FRAMEWORK SELÇUK USTA Sr. Software Developer @hurriyet.com.tr linkedin.com/in/selcukusta medium.com/@selcukusta twitter.com/ustasoglu
  • 2. İÇERİK - TORNADO’YA 5NYAKLAŞIMI - 4 ANAHTAR MODÜL - C10K PROBLEMİ & PERFORMANS - ASENKRON KÜTÜPHANELER V4.4.2 / 01.10.2016
  • 4. TORNADO NEDİR, NE DEĞİLDİR? - Açık Kaynak Kodlu (Apache v2.0 Lisansı ile) - Ölçeklenebilir, V4.4.2 / 01.10.2016 - Asenkron / Non-blocking Networking Kütüphanesi - Micro Web Framework - Full-Stack Web Framework + Django + Laravel + ASP.NET MVC - Front-end Web Sunucusu + Nginx, Apache gibi reverse-proxy HTTP sunucularının arkasında çalışır
  • 5. TORNADO NE ZAMAN ORTAYA ÇIKTI? V4.4.2 / 01.10.2016 2009 yılında Friendfeed tarafından geliştirildi. 2009 yılında Friendfeed, Facebook tarafından satın alındı. Kısa bir süre sonra, Facebook tarafından açık kaynaklı olarak community’e sunuldu.
  • 6. TORNADO NEREDE KULLANILIR? V4.4.2 / 01.10.2016 - API Uygulamaları - Hürriyet CMS - Hürriyet Okunurluk Servisi - Long-lived bağlantı gerektiren (WebSocket) canlı uygulamalar - Quora.com (Live feed) - Bazı bahis siteleri  - Mikro web uygulamaları - Hürriyet Image Uygulaması - bitly.com
  • 7. TORNADO NASIL KURULUR &YÖNETİLİR? V4.4.2 / 01.10.2016 import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") def make_app(): return tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start() Python 2.7, 3.3+ KUR > pip install tornado KODLA YÖNET
  • 8. V4.4.2 / 01.10.2016 2 4 ANAHTAR MODÜL
  • 9. WEB FRAMEWORK V4.4.2 / 01.10.2016 Asenkron özelliklerle destekli basit web modülleri tornado.web tornado.template tornado.escape tornado.locale tornado.websocket (C) RequestHandler (C) Application Dekoratörler Çıktı üreticisi Metin değişiklikleri Escape Fonksiyonalitesi Unicode Dönüşümleri Global değişimler (metin, para birimi, sayısal ifadeler, vs...) Tarayıcı ile asenkron iletişimler
  • 10. HTTP SERVERS & CLIENT V4.4.2 / 01.10.2016 HTTP Client/Server-side implementasyonu tornado.httpserver tornado.httpclient tornado.httputil tornado.http1connection Bloklanmayan, tekil iş- parçacıklı (thread) HTTP Server nesnesi Senkron/Asenkron destekli HTTP Client nesnesi Request özellikleri Response özellikleri İstek hatalarının yönetilmesi HTTP isteklerine ait özelliklerin (header, cookie, vs...) özelleştirilmesi HTTP/1.x client/server implementasyonu (>v4.0)
  • 11. ASYNCHRONOUS NETWORKING V4.4.2 / 01.10.2016 Asenkron Sunucu İşlemesi tornado.ioloop tornado.iostream tornado.netutil tornado.tcpclient tornado.tcpserver Asenkron sunucu yönetiminin merkez üssü Kullanıma hazır handler’ların listesini tutan kütüphane Socket polling mekanizması select.epoll() & select.select() Stream nesnelerinin asenkron yönetimi Socket bağlantılarının (bloklanmayan) yönetimi Client seviyesindeTCP bağlantılarının (bloklanmayan) yönetimi Server seviyesindeTCP bağlantılarının (bloklanmayan) yönetimi
  • 12. COROUTINES AND CONCURRENCY V4.4.2 / 01.10.2016 Asenkron İşlemlerinYönetimi tornado.gen tornado.concurrent tornado.queues tornado.process Asenkron işlemlerin merkez üssü İş parçacıklarının (thread) ve callback’lerin yönetimi Asenkron işlemlerin üreticilerinin (fonksiyonlar) ve tüketicilerinin (çağrılar) yönetimi Multi-tasking işlemlerin yönetimi
  • 13. V4.4.2 / 01.10.2016 3 C10K PROBLEMİ & PERFORMANS
  • 14. C10K PROBLEMİ & PERFORMANS V4.4.2 / 01.10.2016 Eşzamanlı (concurrent) 10.000 bağlantının karşılanabilmesi sorunsalı Pub/sub sunucuları, chat uygulamaları, dosya sunucuları, yüksek stres altındaki web sunucuları İstek işlemek ≠ Bağlantı karşılamak
  • 15. C10K PROBLEMİ & PERFORMANS V4.4.2 / 01.10.2016 8213 3353 2223 2066 785 TORNADO (NGNIX; 4 FRONTENDS) TORNADO (1 SINGLE- THREADED FRONTEND) DJANGO (APACHE/MOD_WSGI) WEB.PY (APACHE/MOD_WSGI) CHERRYPY (STANDALONE) WEB SERVER REQUESTS/SEC (AMD OPTERON, 2.4 GHZ, 4 CORES) Facebook Blog (09/2009)

Notas del editor

  1. Saniyede bir çok istek işlemek, istekleri işleme hızı ile ilgiliyken, aynı anda çok sayıda bağlantıyı karşılayabilen bir sistem, hızlı bir sistem olmak zorunda değildir. Yalnızca her isteğe, belirli bir zaman diliminde net bir şekilde bir yanıt döndürmesi gerekir.
  2. Saniyede bir çok istek işlemek, istekleri işleme hızı ile ilgiliyken, aynı anda çok sayıda bağlantıyı karşılayabilen bir sistem, hızlı bir sistem olmak zorunda değildir. Yalnızca her isteğe, belirli bir zaman diliminde net bir şekilde bir yanıt döndürmesi gerekir.
  3. Daha fazlası için: https://github.com/tornadoweb/tornado/wiki/Links#async-client-libraries-built-on-tornadoioloop
  4. Daha fazlası için: https://github.com/tornadoweb/tornado/wiki/Links#async-client-libraries-built-on-tornadoioloop