Web開發:常用框架


1、Web編程:WSGI

  WSGI將Web服務分為兩個部分:服務器和應用程序。WSGI服務器只負責與網絡相關的兩件事:接收瀏覽器的HTTP請求、向瀏覽器發送HTTP應答;而對HTTP請求的具體處理邏輯,則通過調用WSGI應用程序進行。WSGI的更多信息見:Web開發:CGI和WSGI

  

  實現一個WSGI應用,只需要滿足3個要求:

  1. 是可調用的,比如是一個函數,或者是一個可調用類(具有__call__方法)的實例
  2. WSGI應用應當返回一個可迭代(iterable)的值,比如字符串列表
  3. WSGI應用在返回之前,應當調用WSGI服務器傳入的start_response函數發送狀態碼和HTTP報文頭

2、常用的WSGI服務器

2.1、wsgiref

  wsgiref是WSGI規范的一個參考實現,它可以用來向web服務器或框架添加WSGI支持。它提供了操作WSGI環境變量和響應頭的實用程序,用於實現WSGI服務器的基類,一個為WSGI應用程序提供服務的演示HTTP服務器,以及一個驗證工具,它檢查WSGI服務器和應用程序是否符合WSGI規范(PEP 3333)。

2.2、uWSGI

  uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的作用是與uWSGI服務器進行交換。WSGI是一種Web服務器網關接口。它是一個Web服務器(如nginx,uWSGI等服務器)與web應用(如用Flask框架寫的程序)通信的一種規范。

  要注意 WSGI / uwsgi / uWSGI 這三個概念的區分。

  • WSGI是一種通信協議。
  • uwsgi是一種線路協議而不是通信協議,在此常用於在uWSGI服務器與其他網絡服務器的數據通信。
  • 而uWSGI是實現了uwsgi和WSGI兩種協議的Web服務器。

  uwsgi協議是一個uWSGI服務器自有的協議,它用於定義傳輸信息的類型(type of information),每一個uwsgi packet前4byte為傳輸信息類型描述,它與WSGI相比是兩樣東西。

  使用uWSGI時,web的訪問過程如下:

  詳細內容請參考:https://blog.csdn.net/yjk13703623757/article/details/79457913

2.3、gunicorn

  Gunicorn“綠色獨角獸”是一個被廣泛使用的高性能的Python WSGI UNIX HTTP服務器,移植自Ruby的獨角獸(Unicorn )項目,使用pre-fork worker模式,具有使用非常簡單,輕量級的資源消耗,以及高性能等特點。

  Gunicorn 服務器作為wsgi app的容器,能夠與各種Web框架兼容(flask,django等),得益於gevent等技術,使用Gunicorn能夠在基本不改變wsgi app代碼的前提下,大幅度提高wsgi app的性能。

3、Web框架

3.1、Python常用Web框架

  Django:一個開放源代碼的Web應用框架,由Python寫成。采用了MVC的框架模式,即模型M,視圖V和控制器C。自帶的服務器基於Python wsgiref 模塊實現。

  Flask:Flask是一個使用Python編寫的輕量級 Web 應用框架。其WSGI工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。

  Tornado是一個異步網絡庫以及基於此之上的web架構庫因此它包含四個部分:

    一套適應web應用開發的框架,以這個架構可很快構建web應用;

    涉及web應用的http協議和websocket協議的實現(客戶端/服務器端);

    非阻塞的異步網絡通訊庫;

    異步操作的協程(coroutine)庫。

 

      

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM