天天看點

了解兩個python web架構:Django&&Tornado

作為一名大學生,我在找暑期實習的時候發現基本上關于python web的工作都會提及一個架構Django,于是好奇的在部落格園尋找了一下相關文章并總結一下:

Django:

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

有了架構,我們程式員可以減少寫控制層的程式,轉而由架構完成,我們隻需寫少量調用代碼進而實作目标,提高工作效率。

Django支援多種資料庫如mysql,oracle。其支援全自動化管理背景,隻需要使用ORM(對象關系映射 (ORM,object-relational mapping):以Python類形式定義你的資料模型,ORM将模型與關系資料庫連接配接起來,你将得到一個非常容易使用的資料庫API,同時你也可以在Django中使用原始的SQL語句。),做簡單的對象定義,它就可以自動生成資料庫結構,以及全功能的管理背景。

Django的友善也意味着,其内置的ORM與其他架構内子產品耦合程度很高(這會讓一些程式員選擇耦合度低的架構)。應用程式若不使用内置的ORM則無法享受架構内種種基于ORM的便利。

Django工作機制:

1.用manage .py runserver 啟動Django伺服器時就載入了在同一目錄下的settings .py。該檔案包含了項目中的配置資訊,例如URLConf(就像是Django所支撐的網站目錄)等,其中最重要的配置就是ROOT_URLCONF,它告訴Django哪個Python子產品應該用作本站的URLConf,預設的是urls .py

了解兩個python web架構:Django&&Tornado

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

轉載于:https://www.cnblogs.com/JanKin-Cui/p/7148515.html