调试¶
在 Visual Studio Code 或 PyCharm 等编辑器中,可以连接调试器。
调用 uvicorn¶
在 FastAPI 应用中,直接导入并运行 uvicorn:
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
a = "a"
b = "b" + a
return {"hello world": b}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
__name__ == "__main__" 简介¶
__name__ == "__main__" 的主要目的是,以如下方式调用 Python 文件时,可以执行某些代码:
$ python myapp.py
但其他文件以模块方式时导入不会调用这些代码,如下:
from myapp import app
更多细节¶
假设文件名为 myapp.py。
以如下方式运行:
$ python myapp.py
Python 会在文件中自动创建内部变量 __name__,并且它的值是字符串 "__main__"。
因此,下面这行代码……
uvicorn.run(app, host="0.0.0.0", port=8000)
……会被执行。
导入模块(文件)时就不会执行。
因此,假设还有一个文件 importer.py:
from myapp import app
# 更多代码
此时,myapp.py 的内部不存在值为 "__main__" 的自动变量 __name__。
所以,下面这行代码……
uvicorn.run(app, host="0.0.0.0", port=8000)
……不会被执行。
说明
详见 Python 官方文档.
使用调试器运行代码¶
因为是在代码中直接运行 Uvicorn 服务器,所以,可以从调试器直接调用 Python 程序(即 FastAPI 应用)。
例如,可以在 Visual Studio Code 中:
- 进入Debug面板
- Add configuration...
- 选择Python
- 运行Python: Current File (Integrated Terminal)调试器
然后,调试器会使用 FastAPI 代码启动服务器,并停在断点处。
如下图所示:

如果使用的是 Pycharm,可以:
- 打开Run菜单
- 选中Debug...
- 弹出上下文菜单
- 选择要调试的文件(本例中为
main.py)
然后,调试器会使用 FastAPI 代码启动服务器,并停在断点处。
如下图所示:
