You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用uWSGI运行FastAPI程序?求实操案例

FastAPI 改用 uWSGI 启动的协议不匹配问题解决方案

核心原因

FastAPI是ASGI框架,uWSGI默认仅支持WSGI协议,直接启动会出现协议不兼容,导致无法正确处理请求。

实操步骤

1. 安装必要依赖

先确保装齐所需包:

pip install uwsgi fastapi python-multipart

2. 编写uWSGI配置文件

新建uwsgi.ini文件,替换对应路径和参数后使用:

[uwsgi]
# 端口配置:直接监听HTTP端口,或者用socket配合反向代理
http = :8000
# 项目根目录,替换成你的项目实际路径
chdir = /opt/your-fastapi-project
# 入口模块:main是你的FastAPI文件名(比如main.py),app是FastAPI实例名
module = main:app

# ASGI适配关键配置
http-websockets = true
protocol = uwsgi
# 进程和线程配置,和你之前Gunicorn的配置对齐即可
master = true
processes = 2
threads = 4
# 退出时自动清理临时文件
vacuum = true
# 日志文件路径(可选,方便后续排查问题)
daemonize = /var/log/uwsgi-fastapi.log

3. 启动uWSGI

用配置文件启动最稳定:

uwsgi --ini uwsgi.ini

测试阶段也可以直接用命令行参数快速启动:

uwsgi --http :8000 --chdir /opt/your-fastapi-project --module main:app --http-websockets true --processes 2 --threads 4

4. 验证启动结果

检查进程是否正常监听指定端口:

ss -tulpn | grep uwsgi

正常输出会显示uWSGI进程监听你配置的端口,类似:

LISTEN 0      1024         *:8000       *:*    users:(("uwsgi",pid=31144,fd=4),("uwsgi",pid=31145,fd=4))

常见排查点

  • 确认module配置正确:比如你的入口文件是app.py,实例是api = FastAPI(),就要写成module = app:api
  • 不要混用WSGI和ASGI参数:比如别同时用wsgi-file和module指定ASGI应用
  • 如果用Nginx反向代理,把uWSGI的http改成socket = 127.0.0.1:8001,Nginx配置里用uwsgi_pass 127.0.0.1:8001;,同时确保Nginx安装了uwsgi模块

内容的提问来源于stack exchange,提问作者XieZhiPeng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:01:06