跳到内容

调试

你可以连接编辑器中的调试器,例如 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 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

# Some more code

在这种情况下,myapp.py 内部自动创建的变量 __name__ 将不会是 "__main__"

所以,这一行:

    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 代码的服务器,在断点处停止等。

这看起来可能是这样的: