我直接给你**"服务端真实启动用什么命令"的对照版**,不绕概念。
⸻
一、FastAPI 服务端启动命令
✅ 标准 / 正确 / 生产与开发都通用
uvicorn main:app --host 0.0.0.0 --port 8000
含义拆解(非常重要):
main:app
│ │
│ └── FastAPI 实例名
└────── Python 文件名(main.py)
🔁 开发时常用(自动热重载)
uvicorn main:app --reload
⸻
🧠 FastAPI 为什么不用 python main.py?
因为 FastAPI 本身 不负责启动 HTTP Server
它只负责:
• 路由
• 依赖注入
• 请求处理逻辑
👉 真正监听端口的是 ASGI Server(uvicorn / hypercorn)
⸻
二、Flask 服务端启动命令
Flask 有 两种启动方式,本质不同。
⸻
✅ 方式一:Flask 官方 CLI(推荐)
export FLASK_APP=app.py
export FLASK_ENV=development
flask run
或一行写法:
FLASK_APP=app.py flask run
监听端口默认是:
127.0.0.1:5000
⸻
✅ 方式二:python 直接启动(最常见)
app.py
if name == "main ":
app.run(host="0.0.0.0", port=5000, debug=True)
然后:
python app.py
⸻
⚠️ 注意(非常关键)
app.run() 用的是 Flask 内置开发服务器
• ❌ 不适合生产
• ❌ 性能差
• ❌ 单进程
⸻
三、FastAPI vs Flask 启动方式本质对比(重点)
项目 FastAPI Flask
协议模型 ASGI WSGI
启动者 uvicorn flask / python
HTTP Server 外部必须 内置(开发用)
并发模型 async / await 同步
生产常用 uvicorn / gunicorn gunicorn
⸻
四、生产环境标准启动方式(你以后一定会用)
🚀 FastAPI(生产)
gunicorn main:app
-k uvicorn.workers.UvicornWorker
-w 4
-b 0.0.0.0:8000
⸻
🚀 Flask(生产)
gunicorn app:app -w 4 -b 0.0.0.0:5000
⸻
五、一句话给你"底层真相版"总结
FastAPI 不"自己启动服务",它只"被服务运行";
Flask 能"自己启动服务",但那只是给开发者用的。
如果你愿意,我可以下一步直接给你画一张:
Nginx → Uvicorn → FastAPI → 业务代码
Nginx → Gunicorn → Flask → 业务代码
这种真实部署链路图,你会一下子彻底明白。