Configuration détaillée de Gunicorn

Une simple commande pour démarrer un projet Flask via gunicorn :

gunicorn -w 4 -b 0.0.0.0:5000 app:app

 Parmi eux, -w définit le nombre maximum de processus, -b lie IP et port, la première application est le nom de fichier de app.py et la seconde application est le nom d'instance de l'application Flask.

Pour plus de paramètres de configuration, consultez les éléments suivants :

-c CONFIG:CONFIG,配置文件的路径,通过配置文件启动;生产环境使用;
-b ADDRESS:ADDRESS,ip加端口,绑定运行的主机;
-w INT, --workers INT:用于处理工作进程的数量,为正整数,默认为1;
-k STRTING, --worker-class STRTING:要使用的工作模式,默认为sync同步进程,可以修改为eventlet或gevent异步进程
--threads INT:处理请求的工作线程数,使用指定数量的线程运行每个worker。为正整数,默认为1。
--worker-connections INT:最大客户端并发数量,默认情况下这个值为1000。
--backlog int:未决连接的最大数量,即等待服务的客户的数量。默认2048个,一般不修改;
-p FILE, --pid FILE:设置pid文件的文件名,如果不设置将不会创建pid文件
--access-logfile FILE:要写入的访问日志目录
--access-logformat STRING:要写入的访问日志格式
--error-logfile FILE, --log-file FILE:要写入错误日志的文件目录。
--log-level LEVEL:错误日志输出等级。
--limit-request-line INT:HTTP请求头的行数的最大大小,此参数用于限制HTTP请求行的允许大小,默认情况下,这个值为4094。值是0~8190的数字。
--limit-request-fields INT:限制HTTP请求中请求头字段的数量。此字段用于限制请求头字段的数量以防止DDOS攻击,默认情况下,这个值为100,这个值不能超过32768
--limit-request-field-size INT:限制HTTP请求中请求头的大小,默认情况下这个值为8190字节。值是一个整数或者0,当该值为0时,表示将对请求头大小不做限制
-t INT, --timeout INT:超过这么多秒后工作将被杀掉,并重新启动。一般设定为30秒;
--daemon:是否以守护进程启动,默认false;
--chdir:在加载应用程序之前切换目录;
--graceful-timeout INT:默认情况下,这个值为30,在超时(从接收到重启信号开始)之后仍然活着的工作将被强行杀死;一般使用默认;
--keep-alive INT:在keep-alive连接上等待请求的秒数,默认情况下值为2。一般设定在1~5秒之间。
--reload:默认为False。此设置用于开发,每当应用程序发生更改时,都会导致工作重新启动。
--spew:打印服务器执行过的每一条语句,默认False。此选择为原子性的,即要么全部打印,要么全部不打印;
--check-config:显示现在的配置,默认值为False,即显示。
-e ENV, --env ENV:设置环境变量;

Lorsque la configuration est compliquée, gunicorn peut être configuré via le fichier conf, et la commande de démarrage est :

gunicorn -c gunicorn.conf app:app

 Fichier de configuration détaillé de Gunicorn :

# gunicorn.conf
# coding:utf-8
import multiprocessing
# 并行工作进程数, int,cpu数量*2+1 推荐进程数
workers = multiprocessing.cpu_count() * 2 + 1  
# 指定每个进程开启的线程数
threads = 3 
# 绑定的ip与端口
bind = '0.0.0.0:5000' 
# 设置守护进程,将进程交给supervisor管理
daemon = 'false'
# 工作模式协程,默认的是sync模式
worker_class = 'gevent'
# 设置最大并发量(每个worker处理请求的工作线程数,正整数,默认为1)
worker_connections = 2000
# 最大客户端并发数量,默认情况下这个值为1000。此设置将影响gevent和eventlet工作模式
max_requests = 2000
# 设置进程文件目录
pidfile = '/home/your_path/gunicorn.pid'
# 设置访问日志和错误信息日志路径
accesslog = '/home/your_path/gunicorn_acess.log'
errorlog = '/home/your_path/gunicorn_error.log'
# 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
loglevel = 'info' 
# 设置gunicorn访问日志格式,错误日志无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
# 监听队列
backlog = 512                
#进程名
proc_name = 'gunicorn_process'   
# 设置超时时间120s,默认为30s。按自己的需求进行设置timeout = 120
timeout = 120      
# 超时重启
graceful_timeout = 300
# 在keep-alive连接上等待请求的秒数,默认情况下值为2。一般设定在1~5秒之间。
keepalive = 3
# HTTP请求行的最大大小,此参数用于限制HTTP请求行的允许大小,默认情况下,这个值为4094。
# 值是0~8190的数字。此参数可以防止任何DDOS攻击
limit_request_line = 5120
# 限制HTTP请求中请求头字段的数量。
#  此字段用于限制请求头字段的数量以防止DDOS攻击,与limit-request-field-size一起使用可以提高安全性。
# 默认情况下,这个值为100,这个值不能超过32768
limit_request_fields = 101
# 限制HTTP请求中请求头的大小,默认情况下这个值为8190。
# 值是一个整数或者0,当该值为0时,表示将对请求头大小不做限制
limit_request_field_size = 8190
# 设置gunicorn使用的python虚拟环境
pythonpath='/home/your_path/venv/bin/python3'
# 环境变量
raw_env = 'APE_API_ENV=DEV'

Pour des exemples de didacticiels détaillés, veuillez vous référer à :
Gunicorn+Nginx déploie le projet Flask sur le blog de Linux_DooDoo~ - Blog CSDN Gunicorn+Nginx déploie le projet Flask sur Linux https://blog.csdn.net/qq_40039731/article/details/123059571

Supongo que te gusta

Origin blog.csdn.net/qq_40039731/article/details/123124455
Recomendado
Clasificación