一般比較習慣使用uwsgi進行部署django, flask應用。但,有時受許可權限制,無法安裝uwsgi, 所以就使用gunicorn進行部署。
之前使用python3的使用,發現 supervisor是不支援。所以就不打算用supervisor了。
純粹介紹gunicorn 簡單部署方法,完整流程。
環境:
python2
centos 6
from flask import flask
defindex
():return
'hello world'
if __name__ == '__main__':
在該目錄下的命令視窗中執行:
gunicorn然後在本機的其他的地方訪問(curl 或者瀏覽器) 即可看到返回 「hello world」。-b 127.0
.0.1
:7200
以上例子中:
代表:$(module_name):$(variable_name). module_nam也可以是路徑。variable_name一般是wsgi檔案中的變數。
給以上例項增加乙個wsgi檔案(與uwsgi一樣), wsgi.py
#coding:utf-8
#!/usr/bin/python
import sys
import os
cwd = os.path.split(os.path.realpath(__file__))[0]
print cwd
if __name__ == "__main__":
那麼以上命令可以改為
gunicorn這個引數對應兩種使用方式,一種是命令列,一種是配置檔案。-b 127.0
.0.1
:7200
wsgi
在網上見到的大多數部署方式都是採用命令列的方式:
除了例子中的-b引數設定ip與埠外。還有其他的一些引數。
見官網 :
使用思路:
根據需要,對照引數的功能介紹,選擇合適引數,確定引數值。
比如,我要使用多程序:
文件介紹說命令列引數可以使 -w, 或者 –wokers ,值型別為 int, 範圍 2到 4*(核數)。
如我想用 4 程序,例子中的部署命令可以改為:
gunicorn
-b 127.0
.0.1
:7200
或者
gunicorn
-b 127.0
.0.1
:7200
再例如新增日誌目錄
gunicorn -b
127.0
.0.1:7200
--wokers 4
還是以上面的配置 多程序 為例:
配置檔案可以寫成:
gunicorn.conf
bind = "127.0.0.1:7200"執行命令:workers =4
gunicorn
-cgunicorn
.conf
即可
如果加上配置檔案為:
gunicorn.conf
import os
cwd = os.path
.split(os.path
.abspath(__file__))[0]
bind = "127.0.0.1:7200"
workers =4
accesslog = os.path
.join(cwd, "gunicorn_log")
除了整數,其他值為字串的都應該使用引號。
可以在python命令列中執行execfile(gunicorn.conf)
(gunicorn採用此方法讀取配置檔案)檢查配置檔案是否有問題。
然後執行上面命令。
可以看到命令部署,檔案配置中使用的引數不一樣,
日誌配置引數,命令列中使用 –access-logfile ,而在檔案配置中使用 accesslog。
如圖中,第一行的引數用於檔案配置中,
第二行表示命令行中引數以及,引數值型別。
第三行表示該引數預設值。
根據以上的引數使用方法,其他引數的使用也有這樣的規律。
參考檔案:
gunicorn setting
用gunicorn和gevent提高python web框架的效能
在django中配置 wsgi.py 檔案,該檔案防置在 與setting.py 同一目錄下。
比如**名叫 checker, 那麼 wsgi.py 與setting.py 問價在 checker/checker 目錄下面。
wsgi.py
import os類似配置flask一樣,寫完 gunicorn的 配置檔案 gunicorn.conf 並放在 checker 目錄下面。from django.core
os.environ
.setdefault("django_settings_module", "checker.settings")
部署django的執行命令:
使用gunicorn部署Flask
gunicorn是乙個python wsgi的web服務框架,只支援在unix系統上執行,於ruby的unicorn專案。gunicorn使用prefork master worker模型,能夠與各種wsgi web框架協作。gunicorn安裝非常簡單,使用命令pip install guncor...
gunicorn部署flask服務
greenlet是乙個輕量級的協程庫,gevent是基於greenlet的網路庫。gunicorn是支援wsgi協議的http server,gevent是它支援的模式之一。pip install gunicorn pip install gevent 3.啟動 gunicorn啟動有很多引數,可以...
使用gunicorn部署flask專案
目錄web框架致力於如何生成html 而web伺服器用於處理和響應http請求。web框架和web伺服器之間的通訊,需要一套雙方都遵守的介面協議。wsgi協議就是用來統一這兩者的介面的。常用的wsgi容器有gunicorn和uwsgi,但gunicorn直接用命令啟動,不需要編寫配置檔案,相對uws...