开发者

Python的gunicorn服务器配置方式

目录
  • Gunicorn 指南
    • 什么是 Gunicorn?
    • 安装 Gunicorn
    • 使用 Gunicorn 启动 Flask 应用
    • Gunicorn 常用参数详解
    • 使用配置文件启动 Gunicorn
    • 注意事项
    • 推荐部署组合
  • 总结

    Gunicorn 指南

    什么是 Gunicorn?

    Gunicorn(Green Unicorn)是一个兼容 WSGI 协议的 python Web 服务器,广泛用于部署如 Flask、Django 等 Python Web 框架。

    其核心功能包括:

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

    安装 Gunicorn

    www.devze.com
    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():       
    http://www.devze.com    return 'hello world!'   
    
    if __name__ == '__main__':       
        app.run()    
    

    2. 使用 Gunicorn 启动服务

    在项目根目录下运行:

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

    说明

    • 第一个 appphp 是文件名 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开发模式:代码变更时自BboED动重载
    --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 的守护进程运行

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜