Skip to content

调试

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

# 更多代码

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

因此,以下行:

    uvicorn.run(app, host="0.0.0.0", port=8000)

将不会被执行。

/// 信息

更多信息,请查看 官方 Python 文档

///

使用调试器运行你的代码

因为你直接从代码中运行 Uvicorn 服务器,所以你可以直接从调试器调用你的 Python 程序(你的 FastAPI 应用程序)。


例如,在 Visual Studio Code 中,你可以:

  • 转到“调试”面板。
  • “添加配置...”。
  • 选择“Python”
  • 使用选项“Python: 当前文件(集成终端)”运行调试器。

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

以下是它可能的样子:


如果你使用 Pycharm,你可以:

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

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

以下是它可能的样子: