vscode调试fastapi异步接口必须用"module": "uvicorn"启动、选对虚拟环境解释器、配置launch.json含--reload和"justmycode": false,否则断点无法进入async函数体、depends注入失效、热重载不触发。

VSCode 里调试 FastAPI 异步接口,根本不是靠快捷键堆出来的——F5 启动、F9 打断点、F10/F11 单步,这些只是表层操作;真正卡住人的,是启动方式错、解释器没切对、justMyCode 没关,导致断点压根不进 async def 函数体。
为什么 F9 在 async def 第一行设断点总失效?
不是快捷键坏了,是 debugpy 对协程栈帧的捕获有窗口期。某些 Python 3.10+ + debugpy 组合下,首行语句(比如 print("start"))的断点会静默跳过。
- 把断点挪到函数第二行或
await行之后更稳,比如user = await get_user(id)这行打F9 - 确保 VSCode 安装的是最新
ms-python.python扩展(2026 年已强制用debugpy,别留着旧版 ptvsd) -
justMyCode必须设为false,否则Depends注入、中间件里的request构造逻辑全被跳过
F5 启动后断点不触发?检查 launch.json 的 module 和 args
用 program 启动 main.py 就等于绕过 uvicorn,async 上下文直接丢光。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
-
"module": "uvicorn"是唯一正确入口,绝不能写成"program": "main.py"或"module": "main" -
args第一项必须是"main:app"(冒号分隔,不是"main.py:app"),漏掉就报Application not found -
--reload必须显式写在args里,且位置紧贴"main:app"后面,否则改代码不重载
热重载和终端日志怎么协同看?别让两个 uvicorn 抢端口
一边 F5 调试,一边终端敲 uvicorn main:app --reload,8000 端口立刻冲突,后者失败,前者因没配 --reload 又不响应变更。
-
launch.json里加"console": "integratedTerminal",所有重载日志、错误堆栈都出现在 VSCode 底部终端 - Linux/WSL 下若提示
WatchFiles not available,补装watchfiles:pip install watchfiles -
--reload默认只监听.py文件,.env或pyproject.toml改了不会重载,得手动重启
最易被忽略的其实是解释器路径——右下角状态栏显示的 Python 路径,必须是项目虚拟环境里的 .venv/bin/python(macOS/Linux)或 .venv\Scripts\python.exe(Windows),而不是系统 Python。哪怕 fastapi[all] 装对了,解释器选错,uvicorn 找不到、python-multipart 缺失,表单上传和 JWT 验证就直接崩在你没写的代码行上。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










