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服務器進行交換。bash
SystemOS: CentOS-7.5_x64
Python: 3.6
virtual: Anaconda3
複製代碼
# 在虛擬環境中直接安裝
$ pip install uwsgi
複製代碼
hello_world.py服務器
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
複製代碼
啓動app
uwsgi --http 0.0.0.0:8000 --wsgi-file hello_world.py
框架
使用瀏覽器訪問http://ip:8000
socket
啓動 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
複製代碼