Gunicorn-配置详解

摘要:
在之前的文章中有记录WSGI容器的作用,以及我们知道常见的容器就只有的uWSGI和Gunicorn,在之前的文章中有记录他们的特性及优缺点,在这就不在多做描述。Gunicorn可绑定多个套接字,如:gunicorn-b127.0.0.1:8000-b[::1]:9000manager:app1backlog--backlog未决连接的最大数量,即等待服务的客户的数量。一般设定为30秒graceful_timeout--graceful-timeoutINT优雅的人工超时时间,默认情况下,这个值为30。limit_request_line--limit-request-lineINTHTTP请求行的最大大小,此参数用于限制HTTP请求行的允许大小,默认情况下,这个值为4094。

之前的文章中有记录WSGI容器的作用,以及我们知道常见的容器就只有的uWSGI和Gunicorn,在之前的文章中有记录他们的特性及优缺点,在这就不在多做描述。接下来将着重记录一下Gunicorn的一些配置:

config

-c CONFIG, --config CONFIG

Gunicorn配置文件路径,路径形式的字符串格式,如:

gunicorn -c gunicorn.conf manager:app
  • 1

bind

-b ADDRESS, --bind ADDRESS

Gunicorn绑定服务器套接字,Host形式的字符串格式。Gunicorn可绑定多个套接字,如:

gunicorn -b 127.0.0.1:8000 -b [::1]:9000 manager:app
  • 1

backlog

--backlog

未决连接的最大数量,即等待服务的客户的数量。必须是正整数,一般设定在64~2048的范围内,一般设置为2048,超过这个数字将导致客户端在尝试连接时错误

workers

-w INT, --workers INT

用于处理工作进程的数量,为正整数,默认为1。worker推荐的数量为当前的CPU个数*2 + 1。计算当前的CPU个数方法:

import multiprocessing
print multiprocessing.cpu_count()
  • 1
  • 2

worker_class

-k STRTING, --worker-class STRTING

要使用的工作模式,默认为sync。可引用以下常见类型“字符串”作为捆绑类:

  • sync
  • eventlet:需要下载eventlet>=0.9.7
  • gevent:需要下载gevent>=0.13
  • tornado:需要下载tornado>=0.2
  • gthread
  • gaiohttp:需要python 3.4和aiohttp>=0.21.5

threads

--threads INT

处理请求的工作线程数,使用指定数量的线程运行每个worker。为正整数,默认为1。

worker_connections

--worker-connections INT

最大客户端并发数量,默认情况下这个值为1000。此设置将影响geventeventlet工作模式

max_requests

--max-requests INT

重新启动之前,工作将处理的最大请求数。默认值为0。

max_requests_jitter

--max-requests-jitter INT

要添加到max_requests的最大抖动。抖动将导致每个工作的重启被随机化,这是为了避免所有工作被重启。randint(0,max-requests-jitter)

timeout

-t INT, --timeout INT

超过这么多秒后工作将被杀掉,并重新启动。一般设定为30秒

graceful_timeout

--graceful-timeout INT

优雅的人工超时时间,默认情况下,这个值为30。收到重启信号后,工作人员有那么多时间来完成服务请求。在超时(从接收到重启信号开始)之后仍然活着的工作将被强行杀死。

keepalive

--keep-alive INT

keep-alive连接上等待请求的秒数,默认情况下值为2。一般设定在1~5秒之间。

limit_request_line

--limit-request-line INT

HTTP请求行的最大大小,此参数用于限制HTTP请求行的允许大小,默认情况下,这个值为4094。值是0~8190的数字。此参数可以防止任何DDOS攻击

limit_request_fields

--limit-request-fields INT

限制HTTP请求中请求头字段的数量。此字段用于限制请求头字段的数量以防止DDOS攻击,与limit-request-field-size一起使用可以提高安全性。默认情况下,这个值为100,这个值不能超过32768

limit_request_field_size

--limit-request-field-size INT

限制HTTP请求中请求头的大小,默认情况下这个值为8190。值是一个整数或者0,当该值为0时,表示将对请求头大小不做限制

reload

--reload

代码更新时将重启工作,默认为False。此设置用于开发,每当应用程序发生更改时,都会导致工作重新启动。

reload_engine

--reload-engine STRTING

选择重载的引擎,支持的有三种:

  • auto
  • pull
  • inotity:需要下载

spew

--spew

打印服务器执行过的每一条语句,默认False。此选择为原子性的,即要么全部打印,要么全部不打印

check_config

--check-config

显示现在的配置,默认值为False,即显示。

preload_app

--preload

在工作进程被复制(派生)之前加载应用程序代码,默认为False。通过预加载应用程序,你可以节省RAM资源,并且加快服务器启动时间。

chdir

--chdir

加载应用程序之前将chdir目录指定到指定目录

daemon

--daemon

守护Gunicorn进程,默认False

raw_env

-e ENV, --env ENV

设置环境变量(key=value),将变量传递给执行环境,如:

gunicorin -b 127.0.0.1:8000 -e abc=123 manager:app
  • 1

在配置文件中写法:

raw_env=["abc=123"]
  • 1

pidfile

-p FILE, --pid FILE

设置pid文件的文件名,如果不设置将不会创建pid文件

worker_tmp_dir

--worker-tmp-dir DIR

设置工作临时文件目录,如果不设置会采用默认值。

accesslog

--access-logfile FILE

要写入的访问日志目录

access_log_format

--access-logformat STRING

要写入的访问日志格式。如:

access_log_format = '%(h)s %(l)s %(u)s %(t)s'
  • 1

常见格式说明:

识别码说明
h远程地址
l“-“
u用户名
t时间
r状态行,如:GET /test HTTP/1.1
m请求方法
U没有查询字符串的URL
q查询字符串
H协议
s状态码
Bresponse长度
bresponse长度(CLF格式)
f参考
a用户代理
T请求时间,单位为s
D请求时间,单位为ms
p进程id
{Header}i请求头
{Header}o相应头
{Variable}e环境变量

errorlog

--error-logfile FILE, --log-file FILE

要写入错误日志的文件目录。

loglevel

--log-level LEVEL

错误日志输出等级。

支持的级别名称为:

  • debug(调试)
  • info(信息)
  • warning(警告)
  • error(错误)
  • critical(危急)

更多配置:http://docs.gunicorn.org/en/stable/settings.html#server-mechanics

免责声明:文章转载自《Gunicorn-配置详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇编程和音乐真的很像吗?图文详解一台电脑怎么设置两个显示器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Win7 Python开发环境搭建

1、  下载Anaconda并安装   地址: https://www.anaconda.com/download/     Anaconda包括Python基础包与一系列科学计算包,安装后不用再单独安装Python。 2、  安装Pycharm   地址:https://www.jetbrains.com/pycharm/   Pycharm是Pytho...

Python调用百度OCR识别API实现文字图片识别

先参考:百度ocr识别API文档 ;上面有详细步骤,使用百度账号登录,首次创建新的应用,创建后的应用界面如下: 1.Python环境:Python3.6; 2.安装Python三方库:baidu-aip 3.代码实现,如下实现的是高精度实现方法: from aip import AipOcr def baiduOCR(picfile): # pic...

Python 100行代码实现2048小游戏

首先我们来看看我们效果图:  这是最简版后期可以去优化,后端自己写一个可视化页面,或者配上一个前端,可以使我们的程序变得更绚丽。 下面我们开始我们的代码 一、构造一个把0元素移至末尾的函数 [2, 4, 0, 2] --> [2, 4, 2, 0] 1 def zero_end(): 2 """ 3 0元素移至到末尾 4...

简单谈谈python的反射机制

反射,可以理解为利用字符串的形式去对象中操作成员属性和方法 反射的这点特性让我联想到了exec函数,也是把利用字符串的形式去让Python解释器去执行命令 Python Version: 3.5+   对编程语言比较熟悉的朋友,应该知道“反射”这个机制。Python作为一门动态语言,当然不会缺少这一重要功能。然而,在网络上却很少见到有详细或者深刻的剖析...

python 最短路径

贾格尔(Jagger)找到一张地图,该地图指示大量宝藏的位置,并希望找到它们。 该地图将几个位置标记为节点和几个边缘,这表示两个位置直接相连。 总共有n个节点和m个边。 贾格尔(Jagger)位于节点1,宝物位于节点n。 当他运行最短路径算法以找出通往宝藏的最短路径时,他突然发现除了他的起始节点和宝藏的位置以外,每个节点都有一个怪物。 节点u上的怪物具有力...

Python之文件与目录操作(os、zipfile、tarfile、shutil)

Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模块 文件压缩 tarfile模块 文件归档压缩 shutil模块 高级文件和目录处理及归档压缩 fileinput模块 读取...