Python Web 程序使用 uWSGI 部署

Python Web 程序使用 uWSGI 部署

WSGI是什麼?

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

uWSGI 是一個(巨大的) C 應用,因此你須要一個 C 編譯器(好比 gcc 或者 clang)和 Python 開發版頭文件。瀏覽器

uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的做用是與uWSGI服務器進行交換。服務器

uWSGI 安裝

環境

SystemOS: CentOS-7.5_x64
Python: 3.6
virtual: Anaconda3

安裝

# 在虛擬環境中直接安裝
$ pip install uwsgi

uWSGI hello world

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.pysocket

使用瀏覽器訪問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
相關文章
相關標籤/搜索