Tornado學習筆記第一篇-了解篇

今天我們開始入新坑Tornado,學習和Flask不一樣的web開發(fā)框架。一起加油。。。

我們先看下百度百科上關于tornado的介紹:

Tornado是一種 Web 服務器軟件的開源版本。Tornado 和現(xiàn)在的主流 Web 服務器框架(包括大多數(shù) Python 的框架)有著明顯的區(qū)別:它是非阻塞式服務器,而且速度相當快。

得利于其非阻塞的方式和對epoll的運用,Tornado 每秒可以處理數(shù)以千計的連接,因此 Tornado 是實時 Web 服務的一個 理想框架。

是為了解決高并發(fā)和長連接而生的一個框架。

tornado的一些特點:
  • tornado除了是一個web框架外還是一個web服務器

  • tornado包括了異步http客戶端AsyncHttpClient,因為tornado還可以做一些高并發(fā)的請求

  • tornado的web框架是一個非常小的web框架的核心,類似flask

  • tornado是天然支持長連接的(聊天,推送)

我們看下老師一個手記來看下Django,FlaskTornado的區(qū)別:https://www.imooc.com/article/24759

tornado的優(yōu)勢:
  1. 提供了異步編碼的一整套方案,即不僅是一個web開發(fā)框架,還包括了一整套的http協(xié)議和websocket協(xié)議的庫。
  2. tornado不只是web框架,也是web服務器。
  3. tornado是基于協(xié)程的解決方案。
  4. tornado提供websocket的長連接(web聊天,消息推送)
tornado是如何做到高并發(fā)的呢?

tornado的核心底層就是利用協(xié)程和高效的epoll事件循環(huán)來完成的。使用協(xié)程會比使用線程的系統(tǒng)開銷省很多。

  1. 使用了異步非阻塞IO (重點在于理解協(xié)程的調(diào)度)
  2. 基于epoll的事件循環(huán)(nginx的并發(fā)底層也是使用了linux的epoll
  3. 協(xié)程提高了代碼的可讀性(同步模式寫異步代碼)
一些對tornado的誤解:
  1. tornado提供的只是web框架
  2. 只要用tornado就是高并發(fā)(必須了解什么是協(xié)程,什么是事件循環(huán))
  3. 直接在tornado中使用了大量的同步io
  4. tornado只需要將耗時的操作放到線程池中就可以達到高并發(fā)
  5. tornado中多線程和協(xié)程的單線程是不是沖突?(不是,再tornado中會有一個主線程完成協(xié)程的事件循環(huán),也有一個線程池將耗時的任務放到線程池中即使用同步IO)
盡量使用async和await而不是coroutine裝飾器和yield from

理由:

  1. coroutine是一個從生成器過渡到協(xié)程的方案。
  2. yieldawait的混合使用造成代碼的可讀性很差
  3. 生成器可以模擬協(xié)程,但是生成器應該做自己!
  4. 原生協(xié)程總體來說比基于裝飾器的協(xié)程快
  5. 原生協(xié)程可以使用async forasync with更符合Python風格
  6. 原生協(xié)程返回的是一個awaitable的對象,裝飾器的協(xié)程返回的是一個future

文檔:

最新5.1.1英文文檔:https://www.tornadoweb.org/en/stable/guide/intro.html

4.3中文文檔:https://tornado-zh.readthedocs.io/zh/latest/

我們使用Tornado的重點是理解協(xié)程,下節(jié)開始我們再重溫一下協(xié)程吧!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 簡介 Tornado龍卷風是一個開源的網(wǎng)絡服務器框架,它是基于社交聚合網(wǎng)站FriendFeed的實時信息服務開發(fā)而...
    JunChow520閱讀 54,436評論 4 46
  • 其中Tornado的定義是 Web 框架和異步網(wǎng)絡庫,其中他具備有異步非阻塞能力,能解決他兩個框架請求阻塞的問題,...
    HappyOn閱讀 2,218評論 2 5
  • 參考教程 為什么用Tornado? 異步編程原理 服務器同時要對許多客戶端提供服務,他的性能至關重要。而服務器端的...
    內(nèi)心強大的Jim閱讀 6,530評論 1 8
  • 必備的理論基礎 1.操作系統(tǒng)作用: 隱藏丑陋復雜的硬件接口,提供良好的抽象接口。 管理調(diào)度進程,并將多個進程對硬件...
    drfung閱讀 3,776評論 0 5
  • title標題: A Web Crawler With asyncio Coroutinesauthor作者: A...
    彰樂樂樂樂閱讀 2,222評論 0 8

友情鏈接更多精彩內(nèi)容