讲师中心 微信公众号
AI工具推荐 视频效率加速

Uvicorn和Gunicorn怎么配合使用

夏浩姑娘_6195

夏浩姑娘_6195

发布时间:2026-11-06 11:03:36

|

115人浏览过

|

来源于php中文网

原创

必须用gunicorn调用uvicorn.workers.UvicornWorker,否则FastAPI异步路由退化为同步、await失效、QPS降至单进程uvicorn的1/3;因FastAPI是ASGI应用而gunicorn默认syncworker仅支持WSGI协议,无法解析ASGI的scope/receive/send三元组。

uvicorn和gunicorn怎么配合使用

为什么不能直接用 gunicorn 启动 FastAPI

因为 FastAPI 是 ASGI 应用,而 gunicorn 默认用的是 syncworker,只认 WSGI 协议。它根本解析不了 ASGI 的 scope/receive/send 三元组——结果就是:await 不执行、异步路由被阻塞、压测时连接堆积、QPS 掉到单进程 uvicorn 的 1/3 左右,甚至报 RuntimeWarning: coroutine 'xxx' was never awaited 或直接 500。

uvicorn.workers.UvicornWorker 是唯一能跑通的 worker 类型

必须显式指定这个 worker,才能让每个 gunicorn 子进程内部真正启动一个 uvicorn 实例,完整接管 ASGI 生命周期。常见错误包括:

  • 写成 -k uvicorn.worker.UvicornWorker(少了个 s)→ 报 ImportError: cannot import name 'UvicornWorker'
  • 用 --worker-class 但漏了 uvicorn[standard] 依赖 → 启动时报 ModuleNotFoundError: No module named 'uvicorn.workers'
  • 配置文件里写 worker_class = "uvicorn.workers.UvicornWorker",但没装 uvicorn 到全局或虚拟环境 → gunicorn 加载失败,日志只在 errorlog 里有提示

main:app 这个路径到底怎么写才对

冒号前是 Python 模块路径(不含 .py),冒号后是模块内定义的 FastAPI 实例变量名。验证方式最可靠:

Uvicorn 0.52.1
Uvicorn 0.52.1

Uvicorn 0.52.1 是 Python ASGI Web 服务器,提供异步应用服务及 WebSocket 支持,常用于 FastAPI、Starlette 等应用的开发和部署。本下载为官方 PyPI 通用 wheel 包,可使用 pip 安装,并由包管理器处理所需依赖。

下载
  • 在项目根目录下运行 python -c "from main import app; print(app)",能成功 import 就说明路径和变量名没问题
  • 如果入口是 src/app/main.py,且 app 变量定义在该文件中,要确保 src 在 PYTHONPATH 里,或启动时加 --chdir /path/to/project
  • 常见翻车点:main.py 里写的是 fastapi_app = FastAPI(),却运行 gunicorn main:app → 应该是 main:fastapi_app

进程数不是越多越好,workers 要按负载类型调

公式 (2 * cpu_count) + 1 在 I/O 密集型服务(如调外部 API、数据库查询)里可能有用,但对 CPU 密集型(如模型推理、图像处理)反而会因 GIL 和内存开销拖慢整体吞吐。实测中:

  • 8 核 CPU + 纯 CPU 计算型服务:6~8 个 workers 更稳,再往上 CPU 利用率不升反降
  • 8 核 + 混合型(含 GPU 推理):需同步控制 gunicorn 进程数和模型加载策略,否则显存被多个进程重复占满
  • 必须用 ps aux | grep uvicorn 或 lsof -i :8000 确认实际生效的进程数,别只信配置文件里的数字

真实部署时最容易忽略的,是 uvicorn.workers.UvicornWorker 对 uvicorn 版本的隐式要求——比如 uvicorn 0.52.1 才稳定支持 max_connections 参数,旧版本设了也无效;还有 --preload 开关,看似省资源,但会提前加载所有模块,导致环境变量读取失败或模型重复初始化。这些细节不验证,上线后就只能靠日志猜问题。

热门AI工具

更多
火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Flowith
Flowith Hot

Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

相关专题

更多
DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

20

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

20

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

20

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

20

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

20

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架零基础入门教程
XORM框架零基础入门教程

本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。

0

2026.11.04

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

40

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方部署指南
Uvicorn官方部署指南

共0课时 | 0人学习

Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn