Web開發

1.什麼是WSGI?

  • WSGI,全稱 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是做爲Python 語言定義的 Web 服務器和 Web 應 用程序或應用框架之間的一種低級別的接口,用來提高可移植Web應用開發的共同點;html

  • WSGI是基於現存的CGI(通用網關接口)標準而設計的;web

  • WSGI能夠認爲是一種web server如何與web application通訊的規範,或者是一種協議;後端

2.服務器與應用程序直接的關係

  • WSGI區分爲兩個部分:一爲「服務器」或「網關」,另外一爲**「應用程序」或「應用框架」**;服務器

  • 在處理一個WSGI請求時,服務器會爲應用程序提供環境信息及一個回調函數(Callback Function);網絡

  • 當應用程序完成處理請求後,透過前述的回調函數,將結果回傳給服務器;app

3.WSGI中間件

  • 所謂的 WSGI 中間件同時實現了API的兩方,所以能夠在WSGI服務器和WSGI應用之間起調解做用:從Web服務器的角度來講,中間件扮演應用程序 ,而從應用程序的角度來講,中間件扮演服務器;

「中間件」組件的功能有:負載均衡

  • 重寫環境變量後,根據目標URL,將請求消息路由到不一樣的應用對象;框架

  • 容許在一個進程中同時運行多個應用程序或應用框架;webapp

  • 負載均衡和遠程處理,經過在網絡上轉發請求和響應消息;分佈式

  • 進行內容後處理,例如應用XSLT樣式表;

4.支持WSGI規範的Web應用框架

BlueBream
bobo
Bottle
CherryPy
Django
Flask
Google App Engine's webapp2
Gunicorn
prestans
Pylons
Pyramid
restlite
Tornado
Trac
TurboGears
Uliweb
web.py
web2py
weblayer
Werkzeug

5.什麼是uwsgi

  • uwsgi與WSGI同樣是一種通訊協議或規範,是uWSGI服務器的獨佔協議,用於定義傳輸信息的類型,每個uwsgi packet前4byte爲傳輸信息類型的描述,與WSGI協議是兩種東西,聽說該協議是fcgi協議的10倍快;

6.什麼是uWSGI服務器

1.png 2.png

  • uWSGI服務器是一個web服務器,實現了基於uwsgi協議的server部分,相似於Java的Tomcat,實現了WSGI協議、uwsgi協議、http協議等, 可以將 http請求進行處理,在內部處理的邏輯從表面上看相似將HTTP請求轉化爲WSGI協議的請求,其爲部署分佈式集羣的網絡應用提供了一套完整的解決方案;

  • uWSGI的主要特色是:強悍的響應性能,低內存佔用,多app管理,詳盡的日誌功能以及高度可定製;

  • 只須要在uWSGI的配置文件中指定application的地址,uWSGI就能直接和應用框架中的WSGI application通訊,這就是經常使用的uWSGI + Django開 發模式,若是須要Nginx作反向代理等功能,能夠將整個web服務器擴展爲 Nginx + uWSGI + Django開發模式;

7.web開發入門

  • wsgiref 模塊實現的 WSGI Server + 自實現的 WSGI Application
from wsgiref.simple_server import make_server

def wsgi_application(environ, start_response):
    status = '200 OK'
    headers = [('Content-Type', 'text/html;charset=utf-8')]
    start_response(status, headers)
    html_template = '<h1> Hello World <h1>'.encode()
    return [html_template, ]
if __name__ == '__main__':
    HOST = '127.0.0.1'
    PORT = 9000
    server = make_server(HOST, PORT, wsgi_application)
    server.serve_forever()
  • wsgiref模塊提供了一個WSGI Server服務器實現的參照樣本,在生產開發Web服務器不能使用這個模塊,僅僅是用來學習的服務器模塊,重點是學習 WSGI Server實現的原理Django的WSGI Server服務器也不能做爲生產Web服務器提供服務,由於Django的WSGI Server也是一個實驗類型的WSGI Server;

  • Django的WSGI Server服務器也不能做爲生產Web服務器提供服務,由於Django的WSGI Server也是一個實驗類型的WSGI Server

  • 在生產中一般使用高性能的WSGI Server,例如:uWSGI服務器,Gunicorn服務器(Jumpserver使用這個這個WSGI Server服務器, 後端的WSGI Application是Django的Application);

參考:https://www.9xkd.com/user/plan-view.html?id=2127616869

相關文章
相關標籤/搜索