WSGI,全稱 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是爲 Python 語言定義的 Web 服務器和 Web 應用程序或框架之間的一種簡單而通用的接口。自從 WSGI 被開發出來之後,許多其它語言中也出現了相似接口。html
WSGI 的官方定義是,the Python Web Server Gateway Interface。從名字就能夠看出來,這東西是一個Gateway,也就是網關。網關的做用就是在協議之間進行轉換。python
WSGI 是做爲 Web 服務器與 Web 應用程序或應用框架之間的一種低級別的接口,以提高可移植 Web 應用開發的共同點。WSGI 是基於現存的 CGI 標準而設計的。nginx
不少框架都自帶了 WSGI server ,好比 Flask,webpy,Django、CherryPy等等。固然性能都很差,自帶的 web server 更多的是測試用途,發佈時則使用生產環境的 WSGI server或者是聯合 nginx 作 uwsgi 。也就是說,WSGI就像是一座橋樑,一邊連着web服務器(如 nginx),另外一邊連着Python的應用程序Application。可是呢,這個橋的功能很弱,有時候還須要別的橋來幫忙才能進行處理。web
uWSGI 是一個(巨大的) C 應用,因此你須要一個 C 編譯器(好比 gcc 或者 clang)和 Python 開發版頭文件。瀏覽器
uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的做用是與uWSGI服務器進行交換。服務器
SystemOS: CentOS-7.5_x64 Python: 3.6 virtual: Anaconda3
# 在虛擬環境中直接安裝 $ pip install uwsgi
hello_world.pyapp
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"]
啓動框架
uwsgi --http 0.0.0.0:8000 --wsgi-file hello_world.py
socket
使用瀏覽器訪問http://ip:8000
性能
啓動 uwsgi 能夠添加多個參數
uwsgi --socket 127.0.0.1:3031 --wsgi-file uwsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:8001
將配置文件集中寫在配置文件中
uwsgi.ini
[uwsgi] socket = 127.0.0.1:3031 chdir = /home/foobar/myproject/ pythonpath = .. processes = 4 threads = 2 stats = 127.0.0.1:9191