文章目录

  • 1 简介
  • 2 安装
  • 3 配置与启动
    • 3.1 命令行配置参数
    • 3.2 python文件配置参数
  • 4. 服务重启、退出等
    • 4.1 获取Gunicorn进程树
    • 4.2 重启Gunicorn进程
    • 4.3 优雅停止Gunicorn进程

1 简介

Gunicorn“绿色独角兽”是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,移植自Ruby的独角兽(Unicorn )项目,使用pre-fork worker模式,具有使用非常简单,轻量级的资源消耗,以及高性能等特点。
Gunicorn 服务器作为wsgi app的容器,能够与各种Web框架兼容(flask,django等),得益于gevent等技术,使用Gunicorn能够在基本不改变wsgi app代码的前提下,大幅度提高wsgi app的性能。

2 安装

安装很简单:

pip install gunicorn

3 配置与启动

Gunicorn可以以三种方式读取配置信息。
第一种方式:从framework定义的配置信息中读取,目前只对 Paster 框架有效。本方式较少用到。
第二种方式:在命令行中定义,命令行中定义的配置信息将会覆盖掉框架中定义的相同的参数名的值。
第三种方式:将所有的参数信息,放到一个python文件中,只要是在命令行中可以定义的参数中,在配置文件中都可以定义。

3.1 命令行配置参数

命令行有哪些参数可以通过gunicorn -h 查到。种类相当多。
常用的有

参数 短参数 说明 默认值
–bind -b 绑定服务的IP和端口号。
–workers INT -w 工作线程数量 1
–backlog 服务器中在pending状态的最大连接数,即client处于waiting的数目。超过这个数目, client连接会得到一个error。建议值64-2048。
–worker_connections 客户端最大同时连接数。只适用于eventlet, gevent工作方式。
–pidfile pid存储文件路径。
–access-logfile FILE 访问日志文件
–error-logfile FILE –log-file 错误日志文件
–daemon -D 后台运行 False
–worker-class -k 有 sync, eventlet(并发), gevent, tornado, gthread选项 sync(同步)
–reload 当代码有修改时,自动重启workers。适用于开发环境。
–reload_extra_files 扩展reload配置,增加templates,configurations等文件修改监控。
–check_config 检查配置

例子:

gunicorn --workers=4 --bind=0.0.0.0:8000 run:app

下面是run.py的内容:

# run.py
from flask import Flaskapp = Flask(__name__)

3.2 python文件配置参数

命令行中定义的参数,都可以放在配置文件中。
下面是例子:

#config.py
import multiprocessingbind = "0.0.0.0:8000"
workers = multiprocessing.cpu_count() * 2 + 1backlog = 2048
worker_class = "eventlet"
worker_connections = 1000
daemon = True
pidfile = 'log/gunicorn.pid'
accesslog = 'log/access.log'
errorlog = 'log/gunicorn.log'
gunicorn --config=config.py run:app

命令行参数和文件配置还可以混合使用,此时命令行中定义的配置信息将会被优先采用。

gunicorn --config=config.py --worker-class=gevent run:app

4. 服务重启、退出等

4.1 获取Gunicorn进程树

用下面的命令获取gunicorn的Master PID

#方法1
pstree -ap|grep gunicorn
#方法2
ps -ef|grep gunicorn

4.2 重启Gunicorn进程

HUP(终端断线)信号发出之后,worker进程会进行被杀掉,并启动新的进程,保证源代码的修改会反映进来。master进程不会变。

kill -HUP master_pid

参数说明:HUP表示“终端断线”之意

4.3 优雅停止Gunicorn进程

kill -9 master_pid

下面的命令是将gunicorn配置在supervisor之下的情况。仅做参考。

# 重新加载配置
sudo supervisorctl reload
# 重启动
sudo supervisorctl restart all(你想重启的单个应用名字也可以)
# 查看状态
sudo supervisorctl status

如果启动问题 先去看看log。


参考1: gunicorn简介、架构、安装与配置

Gunicorn简介、安装、配置、启动相关推荐

  1. Tomcat简介 安装 配置 示例

    Tomcat简介 & 安装 & 配置 & 示例 1.Tomcat简介 2.Tomcat安装 1)RPM包安装 2)二进制安装 3.配置 1)server.xml组件类别 2)s ...

  2. Gunicorn的安装与启动

    Gunicorn的安装与启动 Gunicorn是什么? Gunicorn (独角兽)是一个高效的Python WSGI Server. 通常用它来运行 wsgi application(由我们自己编写 ...

  3. saltstack(八):saltstack配置管理-安装配置启动tomcat样例

    Saltstack配置启动tomcat 判断minion有没有安装jdk和tomcat,没有就分别源码安装,并以普通用户启动. #有一个认识上的坑,saltstack实际上是基于状态管理,例如说tom ...

  4. yii2框架的安装配置启动

    top:环境MacBook 1.通过composer 安装yii2 [yii2需要php的PDO和pdo_mysql扩展,需要确认已安装] a. 首先需要配置composer: 我使用的是阿里云的镜像 ...

  5. Nexus【环境搭建 02】最新版本 nexus-3.35.0-02-unix.tar.gz 安装配置启动及测试(JDK版本+虚拟机参数配置说明)

    一下安装以 nexus-3.35.0-02-unix.tar.gz 进行说明,老版本 nexus-3.4.0-02-unix.tar.gz 的安装说明可以查看<CentOS 7.5 环境下搭建私 ...

  6. SVN入门:流程简介 安装配置 项目库配置 客户端 上线方案

    查看警告:show warnings:  备份库结构:mysqldump 库 -add-drop-table  >  路径 添加用户:grant select,insert on 库名 to ' ...

  7. 01_Influxdb1.7.7的安装配置启动

    目录 1.Influxdb简介 2.influxdb的points数据说明 3.influxdb的下载和安装 首先我们要用root用户权限进入系统,这样方便操作 1.Influxdb简介 influx ...

  8. mongodb安装配置启动

    官网下载 https://www.mongodb.com/ 配置环境变量 1. 打开环境配置文件 open ~/.bash_profile2. 添加环境配置MONGODB_HOME=/soft/mon ...

  9. Linux下安装配置启动redis

    Linux下安装redis Linux版本: Centos7 1. 下载redis并解压 去reids官网下载看一下最新的版本 http://download.redis.io/releases 复制 ...

  10. windows下mysql安装配置启动

    1. 从官网下载mysql免安装包 mysql-5.7.12-win32.zip 2. 解压,配置环境变量 我的电脑->属性->高级->环境变量 选择PATH,在其后面添加: 你的m ...

最新文章

  1. svn中的revert和update
  2. 撕裂者cpu三代文件服务器,AMD三代线程撕裂者CPU开盖:钎焊散热、64核若隐若现...
  3. vim 与系统剪切板
  4. CodeForces - 817F MEX Queries(线段树lazy序)
  5. C#-常用对象-思维导图
  6. XML——使用 XPath来定位信息+使用命名空间
  7. 吐槽贴:用ELECTRA、ALBERT之前,你真的了解它们吗?
  8. Windows Hook机制(转贴一)
  9. threading注意点(python 版)
  10. 修改联想笔记本键盘快捷键
  11. jquery获得当前元素父级元素_jquery怎么获取当前元素的父元素
  12. 文件共享服务器 -----ftp服务一
  13. Java 虚拟机启动
  14. 如何把电脑的计算机固定在桌面上,如何将Win7便签固定在电脑桌面上?
  15. 信度效度难度区分度是什么意思_信度、效度、难度、区分度
  16. 地图标识符号大全_起名字大全男孩 男孩名字,起名字大全男孩
  17. 月薪20k+的Android面试都问些什么?完整PDF
  18. 【软件测试】翻了下招聘APP只会点点点,很慌......测试业务?技术?
  19. POJ 3009 Curling 2.0(深度优先搜索+剪枝)
  20. 电子报刊制作软件之比较

热门文章

  1. 前端实习生需要到达什么水平?
  2. Android中RemoteViews的实现
  3. 关系与关系模式的区别——易懂
  4. 艺赛旗(RPA)python 的 tkinter 进度条的实现
  5. python计算圆柱体积_python计算圆周长、面积、球体体积并画出圆
  6. 汇编语言(王爽)实验十
  7. 汽车灯具、连接器IPX9K IP69K防护等级测试
  8. 跳跃游戏 Jump Game 分析与整理
  9. matlab自带电机案例,MATLAB电机仿真精华50例,源代码
  10. 随手记——静态Flag变量使用不规范导致的重大流程错误