gunicorn 部署 flask 應用

2021-08-11 12:14:12 字數 2901 閱讀 5787

一般比較習慣使用uwsgi進行部署django, flask應用。但,有時受許可權限制,無法安裝uwsgi, 所以就使用gunicorn進行部署。

之前使用python3的使用,發現 supervisor是不支援。所以就不打算用supervisor了。

純粹介紹gunicorn 簡單部署方法,完整流程。

環境:

python2

centos 6

from flask import flask

defindex

():return

'hello world'

if __name__ == '__main__':

在該目錄下的命令視窗中執行:

gunicorn

-b 127.0

.0.1

:7200

然後在本機的其他的地方訪問(curl 或者瀏覽器) 即可看到返回 「hello world」。

以上例子中:

代表:$(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

from django.core

os.environ

.setdefault("django_settings_module", "checker.settings")

類似配置flask一樣,寫完 gunicorn的 配置檔案 gunicorn.conf 並放在 checker 目錄下面。

部署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...