调试¶
你可以在编辑器中连接调试器,例如使用 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 中,你可以
- 前往“调试”面板。
- “添加配置...”
- 选择 “Python”
- 使用选项 “
Python: Current File (Integrated Terminal)
” 运行调试器。
它将启动你的 FastAPI 代码服务器,在你设置的断点处停止等等。
它可能看起来像这样
如果你使用 PyCharm,你可以
- 打开“运行”菜单。
- 选择选项 “Debug...”。
- 然后会出现一个上下文菜单。
- 选择要调试的文件(在本例中为
main.py
)。
它将启动你的 FastAPI 代码服务器,在你设置的断点处停止等等。
它可能看起来像这样