從本身的博客移動過來。python
gunicorn是一個python Wsgi的WEB服務框架,只支持在Unix系統上運行,來源於Ruby的unicorn項目。雖然能夠獨自運行,但功能比較單一,一般是部署在Apache,Nginx以後。Gunicorn使用prefork master-worker模型,可以與各類wsgi web框架協做。linux
gunicorn安裝很是簡單,使用命令pip install guncorn
便可。通常使用它,主要是爲使用其異步的worker模型,還須要安裝對應的異步模塊。web
$ pip install greenlet #使用異步必須安裝 $ pip install eventlet #使用eventlet workers $ pip install gevent #使用gevent workers
後面的內容使用Flask進行舉例,代碼選自Flask首頁給出的測試代碼,保存爲test.py:shell
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!"
一般使用的參數:flask
-c CONFIG, --config=CONFIG 設定配置文件。 -b BIND, --bind=BIND 設定服務須要綁定的端口。建議使用HOST:PORT。 -w WORKERS, --workers=WORKERS 設置工做進程數。建議服務器每個核心能夠設置2-4個。 -k MODULE 選定異步工做方式使用的模塊。
在shell中輸入你的啓動配置,好比gunicorn -w 3 -b 127.0.0.1:8080 test:app
,而後運行正常就能夠啓動服務器。服務器
linux一般會禁止綁定使用1024如下的端口,除非在root用戶權限。不少人在使用gunicorn時試圖將其綁定到80或者443端口,發現無效。若是想綁定到這些端口,常見的有以下的幾種方法:app
一、使用Nginx代理轉發。 二、sudo啓動gunicorn。 三、安裝額外的程序。
若是使用方法2,要確保在sudo狀態下使用pip安裝的gunicorn,不然可能出奇怪問題。框架
使用pstree -ap|grep gunicorn
列出關於gunicorn的全部進程。輸出內容是一個樹形結構,最小的一級是worker進程,他們的上一級是gunicorn進程。使用kill -HUP [gunicorn的進程ID]
殺掉進程。若是該進程還存在上一級進程,使用kill -9 [進程ID]
將其完全關閉。以後再從新執行pstree -ap|grep gunicorn
查看一下。異步