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

如何在通过uvicorn.run()运行FastAPI时启用pdb调试?

解决FastAPI中用uvicorn.run()启动时pdb断点生效的问题

有几种简单的方式可以让pdb.set_trace()在uvicorn.run()启动的应用中正常工作:

  • 直接传递debug=True参数给uvicorn.run()
    虽然你可能误以为该方法没有debug参数,但实际上uvicorn.run()支持通过关键字参数传递debug=True,这和命令行的--debug效果一致,会自动启用调试模式,包括pdb断点支持:

    import uvicorn
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    def read_root():
        import pdb; pdb.set_trace()
        return {"Hello": "World"}
    
    if __name__ == "__main__":
        uvicorn.run("main:app", debug=True)
    
  • 启用reload模式
    如果你的uvicorn版本不支持直接传debug=True,可以通过设置reload=True来启用调试相关特性,pdb断点也会正常触发:

    if __name__ == "__main__":
        uvicorn.run("main:app", reload=True)
    
  • 设置PYTHONBREAKPOINT环境变量
    手动指定Python的断点函数,不需要依赖uvicorn的调试模式,直接在代码开头添加环境变量设置:

    import os
    os.environ["PYTHONBREAKPOINT"] = "pdb.set_trace"
    
    import uvicorn
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    def read_root():
        breakpoint()  # 或者用import pdb; pdb.set_trace()
        return {"Hello": "World"}
    
    if __name__ == "__main__":
        uvicorn.run("main:app")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:10:37