[ ] 本文出處:http://b1u3buf4.xyz/ " ] 本文作者:[B1u3Buf4" [ ] 本文授權:禁止轉載 從自己的博客移動過來。 gunicorn是一個python Wsgi的WEB服務框架,只支持在Unix系統上運行,來源於Ruby的unicorn項目。雖然可以獨自運行,但功 ...
- [*] 本文出處:http://b1u3buf4.xyz/
- [*] 本文作者:B1u3Buf4
- [*] 本文授權:禁止轉載
從自己的博客移動過來。
gunicorn是一個python Wsgi的WEB服務框架,只支持在Unix系統上運行,來源於Ruby的unicorn項目。雖然可以獨自運行,但功能比較單一,通常是部署在Apache,Nginx之後。Gunicorn使用prefork master-worker模型,能夠與各種wsgi web框架協作。
安裝
gunicorn安裝非常簡單,使用命令pip install guncorn
即可。一般使用它,主要是為使用其非同步的worker模型,還需要安裝對應的非同步模塊。
$ pip install greenlet #使用非同步必須安裝
$ pip install eventlet #使用eventlet workers
$ pip install gevent #使用gevent workers
使用
後面的內容使用Flask進行舉例,代碼選自Flask首頁給出的測試代碼,保存為test.py:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
通常使用的參數:
-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埠,發現無效。如果想綁定到這些埠,常見的有如下的幾種方法:
1、使用Nginx代理轉發。
2、sudo啟動gunicorn。
3、安裝額外的程式。
如果使用方法2,要確保在sudo狀態下使用pip安裝的gunicorn,否則可能出奇怪問題。
結束進程
使用pstree -ap|grep gunicorn
列出關於gunicorn的所有進程。輸出內容是一個樹形結構,最小的一級是worker進程,他們的上一級是gunicorn進程。使用kill -HUP [gunicorn的進程ID]
殺掉進程。如果該進程還存在上一級進程,使用kill -9 [進程ID]
將其徹底關閉。之後再重新執行pstree -ap|grep gunicorn
查看一下。