跳到内容

调试

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

那么您文件内部的 __name__ 变量,由 Python 自动创建,其值将是字符串 "__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 中,您可以

  • 转到“调试”面板。
  • “添加配置...”。
  • 选择“Python”
  • 使用“Python: Current File (Integrated Terminal)”选项运行调试器。

然后它将使用您的 **FastAPI** 代码启动服务器,在断点处停止等等。

以下是它的样子


如果您使用 Pycharm,您可以

  • 打开“运行”菜单。
  • 选择“调试...”选项。
  • 然后会出现一个上下文菜单。
  • 选择要调试的文件(在本例中为 main.py)。

然后它将使用您的 **FastAPI** 代码启动服务器,在断点处停止等等。

以下是它的样子