Python的gunicorn服务器配置

Python中使用Gunicorn进行高效部署的配置指南 Gunicorn是一个基于Python的Web服务器,它使用预派生的子进程来处理并发请求,从而提供高性能和可靠性。它与多种框架兼容,如Django、Flask等,并且易于配置和部署。通过正确配置和使用Gunicorn,你可以轻松地在Python Web应用程序中实现高效部署。本文提供了安装、配置和启动Gunicorn的基本指南,并简要介绍了一些高级配置选项和与Nginx的集成。通过充分利用Gunicorn的功能,你可以提高应用程序的性能和可靠性,从而为用户提供更好的体验。 阅读详情

Gunicorn 指南

什么是 Gunicorn?

Gunicorn(Green Unicorn)是一个兼容 WSGI 协议的 Python Web 服务器,广泛用于部署如 Flask、Django 等 Python Web 框架。其核心功能包括:

  • 启动 Web 服务
  • 管理多个工作进程
  • 解决 Python 原生并发性能不足问题
  • 常与 Nginx 组合部署,形成 Nginx + Gunicorn 的架构

安装 Gunicorn

pip install gunicorn
gunicorn -h  # 查看帮助

使用 Gunicorn 启动 Flask 应用

1. 创建一个最基本的 Flask 应用

# app.py
from flask import Flask      

def create_app():       
    app = Flask(__name__)       
    return app   

app = create_app()      

@app.route('/')   
def index():       
    return 'hello world!'   

if __name__ == '__main__':       
    app.run()    

2. 使用 Gunicorn 启动服务

在项目根目录下运行:

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

说明:

  • 第一个 app 是文件名 app.py
  • 第二个 app 是 Flask 实例名 app

Gunicorn 常用参数详解

参数说明
-c CONFIG使用配置文件(适合生产环境)
-b ADDRESS绑定的地址与端口,例如 0.0.0.0:8000
-w, --workers工作进程数,正整数,默认 1
-k, --worker-class工作模式,如 sync(默认)、gevent、eventlet
--threads每个 worker 的线程数,默认 1
--worker-connections最大客户端并发数,默认 1000
--backlog待处理连接队列最大长度,默认 2048
-p, --pid设置 PID 文件路径
--access-logfile访问日志路径
--access-logformat日志格式
--error-logfile / --log-file错误日志路径
--log-level日志等级,默认 info,可设为 debug/warning/error
--limit-request-line请求行最大长度(默认 4094)
--limit-request-fields请求头最大字段数(默认 100)
--limit-request-field-size请求头字段最大字节数(默认 8190)
-t, --timeout请求超时时间,单位秒,默认 30 秒
--daemon是否以守护进程运行,默认 False
--chdir切换工作目录
--graceful-timeout优雅退出时间,默认 30 秒
--keep-aliveKeep-alive 连接等待时间,默认 2 秒
--reload开发模式:代码变更时自动重载
--spew打印服务器执行的所有语句
--check-config显示当前配置
-e, --env设置环境变量

使用配置文件启动 Gunicorn

示例配置文件:gunicorn.conf.py

# 并行工作进程数 
workers = 4 

# 每个工作进程线程数 
threads = 2 

# 监听内网端口 
bind = '127.0.0.1:5000' 

# 是否以守护进程运行 
daemon = 'false' 

# 工作模式 
worker_class = 'gevent' 

# 最大并发连接数 
worker_connections = 2000 

# PID 文件路径 
pidfile = '/var/run/gunicorn.pid' 

# 日志路径 
accesslog = '/var/log/gunicorn_access.log' 
errorlog = '/var/log/gunicorn_error.log' 

# 日志级别 
loglevel = 'warning' 

启动命令

gunicorn -c gunicorn.conf.py app:app

注意事项

  • Gunicorn 不支持 Windows 平台
    在 Windows 下运行可能出现以下错误:
    ImportError: No module named _curses / fcntl
    
    解决方法:
    • 尝试自行下载缺失模块(如 fcntl.py)
    • 推荐在 Linux、WSL 或 Docker 环境中部署

推荐部署组合

生产环境中推荐以下组合:

  • Nginx + Gunicorn + Flask/Django
    • Nginx:作为前端反向代理和静态资源服务
    • Gunicorn:处理 Python 后端应用
    • Supervisor:管理 Gunicorn 的守护进程运行
安装和配置gunicorn 并且,一个请求一个进程,并发时,显然很占CPU和内存。当请求处理时间较长时,会阻塞其他请求的处理,不适合高并发或耗时较长的请求。gevent是基于协程的并发库,可以处理更多的并发连接。异步worker,能同时处理不止一个请求,就不会出现上面同步worker那样,一个请求就把后续请求都block阻塞住的情况了。参考:https://www.cnblogs.com/shengulong/p/7202294.html。好处是,即使一个worker进程crash了,也只会影响一个请求。配置文件要是.py结尾的。 阅读详情

相关推荐

深入理解Gunicorn:配置与优化高并发Flask应用

WSGI(Web Server Gateway Interface)是Python应用与Web服务器之间的接口标准。它定义了一种简单而通用的接口,使得不同的Web应用框架和服务器可以无缝协作。Gunicorn作为一个WSGI服务器,负责接受HTTP请求,将其转发给应用程序处理并返回响应。通过本章的学习,你应该对Gunicorn的工作原理、配置和性能优化有了深入理解。我们详细探讨了Gunicorn的多工机制、常用配置参数、优化策略,以及如何通过性能测试工具进行基准测试和调优。

weixin_52938153的博客 4656

Gunicorn服务器gunicorn_conf.py常用配置详解 以及 Gunicorn日志invalid HTTP method

gunicorn配置可通过gunicorn启动命令行中设定,也可通过配置文件指定。使用配置文件更加方便。不过今天在配置gunicorn_conf的日志配置时碰到了access_log_format无效,gunicorn的日志配置相关参数有4个,分别是accesslog,access_log_format,errorlog,loglevel。accesslog:访问日志路径,同nginx的access_log;accesslog = '-' # 记录到标准输出,不会输出文件。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 2314

Python 服务器端开发:Nginx 与 Gunicorn 配置优化

通过合理配置 Nginx 和 Gunicorn,我们可以构建出一个既强大又高效的 Python Web 应用服务。记住,每一次优化都应基于实际需求和测试结果来进行,切勿盲目追求极端性能。希望本文能帮助您更好地理解和利用这两种工具,为您的项目带来更好的体验。```

2501_91166156的博客 1717

Gunicorn的简单使用

参考原文: https://blog.csdn.net/bbwangj/article/details/82684573   简介 Gunicorn“绿色独角兽”是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,移植自Ruby的独角兽(Unicorn )项目,使用pre-fork worker模式,具有使用非常简单,轻量级的资源消耗,以及高性能等特点。 Gunicor...

chenxy02的博客 3276

numeca linux 11,NUMECA FINE/Turbo16下载-NUMECA FINE/Turbo16官方版v16.0 最新版 - 起点软件园...

NUMECA FINE/Turbo16,空气动力学模拟工具,帮助小伙伴随时仿真模拟,让小伙伴可以模拟出最真实的环境,让小伙伴可以轻松完成环境模拟的服务,帮助小伙伴更好的解决自己的课题研究!NUMECA FINE/Turbo16说明1、支持在64位WINDOWS操作系统和LINUX操作系统下运行2、基于全二阶精度的数值格式,保证了计算精度3、采用先进的全多重网格技术和基于密度的求解方法保证了快速的流...

weixin_39858298的博客 1621

ArcGIS Pro中协同区位熵方法在商业选址分析中的应用

本文详细介绍了如何利用ArcGIS Pro中的协同区位熵方法进行科学的商业选址分析。该方法通过量化目标客户与竞争对手在空间上的关联程度,精准识别市场空白区与竞争红海,帮助决策者从“凭感觉”转向“用数据说话”,有效提升选址成功率和投资回报。

weixin_29214559的博客 359

python web的服务器结构和gunicorn配置

一、python web服务结构 python web下的大致结构可表示为: web服务器: web服务器是指驻留在因特网上某种类型计算机的程序。严格意义上web服务器只负责处理http协议,用于处理静态页面的内容。而动态内容需要通过wsgi接口交给应用服务器去解决。 web框架: 作用是方便我们开发web应用程序,http请求的动态数据是由web框架层来提供的。 常见的有flask...

深海微澜 1002

ISCC练习题MISC

解题技巧:看最后括号应该是IceCTF,先用了一键解码啥也没有啊,不对不对!好像是字符频率统计,转换网站:http://quipqiup.com/有人给你发了一串信息,你能解开吗?

m0_62737381的博客 1119
上一篇: Web服务器基础
下一篇: Debian系和Redhat系防火墙配置
Littlewith
博客等级 码龄5年 205粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值