内容简介:Gunicorn是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,移植至Ruby的独角兽(Unicorn)项目,使用pre-fork worker模式,具有使用非常简单,轻量级的资源消耗,以及高性能等特点。Django自带的简易服务器,它是一个纯Python写的轻量级的WEB服务器,但它是为了开发而设计的,不适合在生产环境中部署。在Django中配置gunicorn,适合高并发的生产环境。
Gunicorn是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,移植至 Ruby 的独角兽(Unicorn)项目,使用pre-fork worker模式,具有使用非常简单,轻量级的资源消耗,以及高性能等特点。
Django自带的简易服务器,它是一个纯 Python 写的轻量级的WEB服务器,但它是为了开发而设计的,不适合在生产环境中部署。
python manage.py runserver 0.0.0.0:8000
在Django中配置gunicorn,适合高并发的生产环境。
特点
-
Gunicorn是基于prefork模式的Python wsgi应用服务器,支持 Unix like的系统
-
采用epoll (Linux下) 非阻塞网络I/O 模型
-
多种Worker类型可以选择 同步的,基于事件的(gevent tornado等),基于多线程的
-
高性能,比之uwsgi不相上下
-
配置使用非常简单
-
支持 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 #监听队列数量,64-2048 #chdir = '/home/test/server/bin' #gunicorn要切换到的目的工作目录 worker_class = 'sync' #使用gevent模式,还可以使用sync 模式,默认的是sync模式 workers = 4 # multiprocessing.cpu_count() #进程数 threads = 16 #multiprocessing.cpu_count()*4 #指定每个进程开启的线程数 loglevel = 'info' #日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置 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" #错误日志文件 accesslog = "-" #访问日志文件,"-" 表示标准输出 errorlog = "-" #错误日志文件,"-" 表示标准输出 proc_name = 'fof_api' #进程名
其中access_log_format选项的变量含义如下:
其每个选项的含义如下: 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日志文件可以写到文件,也可以标准输出到屏幕。
正常启动
以gunicorn.conf.py配置文件启动gunicorn
gunicorn -c gunicorn.conf.py api.wsgi:application
也可以直接启动
gunicorn api.wsgi:application -b 0.0.0.0:8091 -w 4 -k gthread
-w 4是启动4个进程,可以支持更多的并发。
or
gunicorn api.wsgi:application -b 0.0.0.0:8091 -w 4 -k gthread --thread 40 --max-requests 4096 --max-requests-jitter 512
参数详见官网的配置说明,参考文章底部的链接
Docker方式启动
Dockerfile文件
FROM python:3.5 RUNmkdir -p /usr/src/app WORKDIR/usr/src/app COPYrequirements.txt /usr/src/app/requirements.txt RUNpip install -r /usr/src/app/requirements.txt COPY. /usr/src/app CMDgunicorn -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"
参考
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
七周七语言(卷2)
【美】Bruce A. Tate(泰特)、Fred Daoud(达乌德)、Ian Dees(迪斯) / 7ML翻译组 / 人民邮电出版社 / 2016-12 / 59
深入研习对未来编程具有重要意义的7种语言 Lua、Factor、Elixir、Elm、Julia、Idris和MiniKanren 本书带领读者认识和学习7种编程语言,旨在帮助读者探索更为强大的编程工具。 本书延续了同系列的畅销书《七周七语言》《七周七数据库》和《七周七Web开发框架》的体例和风格。 全书共8章,前7章介绍了Lua、Factor、Elm、Elixir、Jul......一起来看看 《七周七语言(卷2)》 这本书的介绍吧!