瞭解兩個python web框架:Django&&Tornado

做爲一名大學生,我在找暑期實習的時候發現基本上關於python web的工做都會說起一個框架Django,因而好奇的在博客園尋找了一下相關文章並總結一下:html

Django:python

Django毫無疑問是當下最出名的python應用框架,採用了MVC框架模式,模型M,視圖V和控制器C,對這個我印象很深由於軟件體系結構課講過,這套框架以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。mysql

有了框架,咱們程序員能夠減小寫控制層的程序,轉而由框架完成,咱們只需寫少許調用代碼從而實現目標,提升工做效率。程序員

Django支持多種數據庫如mysql,oracle。其支持全自動化管理後臺,只須要使用ORM(對象關係映射 (ORM,object-relational mapping):以Python類形式定義你的數據模型,ORM將模型與關係數據庫鏈接起來,你將獲得一個很是容易使用的數據庫API,同時你也能夠在Django中使用原始的SQL語句。),作簡單的對象定義,它就能夠自動生成數據庫結構,以及全功能的管理後臺。web

Django的方便也意味着,其內置的ORM與其餘框架內模塊耦合程度很高(這會讓一些程序員選擇耦合度低的框架)。應用程序若不使用內置的ORM則沒法享受框架內種種基於ORM的便利。sql

Django工做機制:數據庫

 

1.用manage .py runserver 啓動Django服務器時就載入了在同一目錄下的settings .py。該文件包含了項目中的配置信息,例如URLConf(就像是Django所支撐的網站目錄)等,其中最重要的配置就是ROOT_URLCONF,它告訴Django哪一個Python模塊應該用做本站的URLConf,默認的是urls .pyDjango工做機制django

2.當訪問url的時候,Django會根據ROOT_URLCONF的設置來裝載URLConf。後端

3.而後按順序逐個匹配URLConf裏的URLpatterns。若是找到則會調用相關聯的視圖函數,並把HttpRequest對象做爲第一個參數(一般是request)服務器

4.最後該view函數負責返回一個HttpResponse對象。

Django框架適用於小型或中型網站,或者做爲大型網站快速高效的實現產品雛形的工具。

Tornado:

Tornado 它是非阻塞式服務器,並且速度至關快,每秒處理數以千計的鏈接,得利於其非阻塞的方式和對epoll(epoll是Linux內核爲處理大批量文件描述符而做了改進的poll,是Linux下多路複用IO接口select/poll的加強版本,它能顯著提升程序在大量併發鏈接中只有少許活躍的狀況下的系統CPU利用率)的運用,大學操做系統課程中着重講了如何提升系統cpu利用率,FIFO等一系列基礎方法。

若是跟asp.net(ASP.NET又稱爲ASP+,不只僅是ASP的簡單升級,而是微軟公司推出的新一代腳本語言。ASP.NET基於.NET Framework的Web開發平臺,不但吸取了ASP之前版本的最大優勢並參照Java、VB語言的開發優點加入了許多新的特點,同時也修正了之前的ASP版本的運行錯誤。)相比,Tornado僅實現了AsyncHttpHandler(Async爲異步串行端口,也就是實現兩臺計算機的通訊);除此以外,所有須要本身去實現。它只有一個mysql的簡單封裝。

Torando爲單線程異步,因此數據庫查詢若太慢,整個服務器會堵塞。這時需提升整個數據庫的查詢速度,從而才能實現高流量訪問。如將web應用封裝爲異步,可是若數據庫硬盤IO爲0(即此時數據庫爲空閒)則查詢才能足夠快,但現實很難實現。若是後端有查詢實在是太慢,沒法繞過,Tornaod的建議是將這些查詢在後端封裝獨立封裝成爲HTTP接口,而後使用Tornado內置的異步HTTP客戶端進行調用

參考文章:http://www.cnblogs.com/wuvist/archive/2011/06/28/django-And-tornado.html

圖片找自:https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=8bccb1563b87e950561afb3e71513826/738b4710b912c8fcfe024858fd039245d78821b5.jpg

相關文章
相關標籤/搜索