Django中配置Gunicorn

Gunicorn是一個(gè)被廣泛使用的高性能的Python WSGI UNIX HTTP服務(wù)器,移植至Ruby的獨(dú)角獸(Unicorn)項(xiàng)目弃锐,使用pre-fork worker模式,具有使用非常簡(jiǎn)單霹菊,輕量級(jí)的資源消耗,以及高性能等特點(diǎn)鸠按。

Django自帶的簡(jiǎn)易服務(wù)器饶碘,它是一個(gè)純Python寫的輕量級(jí)的WEB服務(wù)器,但它是為了開發(fā)而設(shè)計(jì)的扎运,不適合在生產(chǎn)環(huán)境中部署饮戳。

python manage.py runserver 0.0.0.0:8000

在Django中配置gunicorn洞拨,適合高并發(fā)的生產(chǎn)環(huán)境。

特點(diǎn)

  • Gunicorn是基于prefork模式的Python wsgi應(yīng)用服務(wù)器烦衣,支持 Unix like的系統(tǒng)

  • 采用epoll (Linux下) 非阻塞網(wǎng)絡(luò)I/O 模型

  • 多種Worker類型可以選擇 同步的,基于事件的(gevent tornado等)启泣,基于多線程的

  • 高性能示辈,比之uwsgi不相上下

  • 配置使用非常簡(jiǎn)單

  • 支持 Python 2.x >= 2.6 or Python 3.x >= 3.2

安裝

pip install gunicorn

配置

  • settings.py

在settings.py添加gunicorn。

INSTALLED_APPS = [
    ...
    'gunicorn',
    ...
]
  • gunicorn配置文件gunicorn.conf.py
import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
import multiprocessing

bind = "0.0.0.0:8091"   #綁定的ip與端口
backlog = 512                #監(jiān)聽隊(duì)列數(shù)量矾麻,64-2048
#chdir = '/home/test/server/bin'  #gunicorn要切換到的目的工作目錄
worker_class = 'sync' #使用gevent模式,還可以使用sync 模式险耀,默認(rèn)的是sync模式
workers = 4 # multiprocessing.cpu_count()    #進(jìn)程數(shù)
threads = 16 #multiprocessing.cpu_count()*4 #指定每個(gè)進(jìn)程開啟的線程數(shù)
loglevel = 'info' #日志級(jí)別弄喘,這個(gè)日志級(jí)別指的是錯(cuò)誤日志的級(jí)別,而訪問日志的級(jí)別無法設(shè)置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'

# accesslog = "/home/log/gunicorn_access.log"      #訪問日志文件
#errorlog = "/home/log/gunicorn_error.log"        #錯(cuò)誤日志文件
accesslog = "-"  #訪問日志文件甩牺,"-" 表示標(biāo)準(zhǔn)輸出
errorlog = "-"   #錯(cuò)誤日志文件蘑志,"-" 表示標(biāo)準(zhǔn)輸出

proc_name = 'fof_api'   #進(jìn)程名

其中access_log_format選項(xiàng)的變量含義如下:

其每個(gè)選項(xiàng)的含義如下:
h          remote address
l          '-'
u          currently '-', may be user name in future releases
t          date of the request
r          status line (e.g. ``GET / HTTP/1.1``)
s          status
b          response length or '-'
f          referer
a          user agent
T          request time in seconds
D          request time in microseconds
L          request time in decimal seconds
p          process ID

accesslog、errorlog日志文件可以寫到文件贬派,也可以標(biāo)準(zhǔn)輸出到屏幕急但。

正常啟動(dòng)

以gunicorn.conf.py配置文件啟動(dòng)gunicorn

gunicorn -c gunicorn.conf.py api.wsgi:application

也可以直接啟動(dòng)

gunicorn api.wsgi:application -b 0.0.0.0:8091 -w 4 -k gthread

-w 4是啟動(dòng)4個(gè)進(jìn)程,可以支持更多的并發(fā)搞乏。

or

gunicorn api.wsgi:application -b 0.0.0.0:8091 -w 4 -k gthread  --thread 40 --max-requests 4096 --max-requests-jitter 512

參數(shù)詳見官網(wǎng)的配置說明波桩,參考文章底部的鏈接

Docker方式啟動(dòng)

Dockerfile文件

FROM python:3.5
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
 
COPY requirements.txt /usr/src/app/requirements.txt
RUN pip install -r /usr/src/app/requirements.txt
 
COPY . /usr/src/app
CMD gunicorn -c gunicorn.conf.py api.wsgi:application

輸出:

[24/Aug/2018:09:45:42 +0800] <16> 10.154.53.113 "POST /api/v1/compose/ HTTP/1.0" 200 5.369574 1113 https://xxxx.com/ProductPerspective/detail" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
[24/Aug/2018:09:45:43 +0800] <14> 10.154.53.113 "POST /api/v1/fund_static/ HTTP/1.0" 200 5.868518 481 https://xxxx.com/ProductPerspective/detail" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
[24/Aug/2018:09:46:00 +0800] <334> 10.154.53.113 "POST /api/v1/adjustment/ HTTP/1.0" 200 0.845745 1398 https://xxxx.com/ProductPerspective/detail" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
[24/Aug/2018:09:46:00 +0800] <12> 10.154.53.113 "POST /api/v1/risk/ HTTP/1.0" 200 0.860662 1254 https://xxxx.com/ProductPerspective/detail" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市请敦,隨后出現(xiàn)的幾起案子镐躲,更是在濱河造成了極大的恐慌,老刑警劉巖侍筛,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萤皂,死亡現(xiàn)場(chǎng)離奇詭異勾笆,居然都是意外死亡敌蚜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門窝爪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弛车,“玉大人齐媒,你說我怎么就攤上這事》柞耍” “怎么了喻括?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贫奠。 經(jīng)常有香客問我唬血,道長,這世上最難降的妖魔是什么唤崭? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任拷恨,我火速辦了婚禮,結(jié)果婚禮上谢肾,老公的妹妹穿的比我還像新娘腕侄。我一直安慰自己,他們只是感情好芦疏,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布冕杠。 她就那樣靜靜地躺著,像睡著了一般酸茴。 火紅的嫁衣襯著肌膚如雪分预。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天薪捍,我揣著相機(jī)與錄音笼痹,去河邊找鬼。 笑死飘诗,一個(gè)胖子當(dāng)著我的面吹牛与倡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昆稿,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼息拜!你這毒婦竟也來了溉潭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤少欺,失蹤者是張志新(化名)和其女友劉穎喳瓣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赞别,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡畏陕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仿滔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惠毁。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡犹芹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鞠绰,到底是詐尸還是另有隱情腰埂,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布蜈膨,位于F島的核電站屿笼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏翁巍。R本人自食惡果不足惜驴一,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灶壶。 院中可真熱鬧肝断,春花似錦、人聲如沸例朱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洒嗤。三九已至箫荡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渔隶,已是汗流浹背羔挡。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留间唉,地道東北人绞灼。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像呈野,于是被迫代替她去往敵國和親低矮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 謠言止于智者被冒,不做個(gè)傳謠言的人军掂。造謠與嫉妒,無中生有昨悼。謠言能致人于死地蝗锥,人言可畏。過去造謠對(duì)人傷害太大率触。社會(huì)對(duì)每個(gè)...
    我的秘密小窩閱讀 196評(píng)論 0 0
  • 男主人公傅之醉臥遠(yuǎn)方戰(zhàn)場(chǎng)终议,女主人公文答仍守信寫信,看徐子為如何用回環(huán)恬靜筆法讓他們?cè)俅纹嗝老嘤觥穴张!}記 在停...
    徐子為閱讀 525評(píng)論 0 2
  • 親愛的女孩陆馁,你知道找颓,天空的藍(lán)色為什么會(huì)那么澄澈?jiǎn)帷N蚁肽阒蓝7贰D腔魇ǎ阒罏槭裁次铱茨銜r(shí),眼睛是五彩斑斕的嗎益老。我...
    22bf81a7c9bf閱讀 302評(píng)論 2 3
  • 晚上看《夏洛特的煩惱》彪蓬,電影用夢(mèng)的方式讓主人公實(shí)現(xiàn)現(xiàn)實(shí)中難以實(shí)現(xiàn)的夢(mèng)想,比如捺萌,名利雙收档冬,和難忘的初戀結(jié)婚。電影在虛...
    悠然晨欣閱讀 259評(píng)論 2 11