Debugging
正在阅读# 调试 { #debugging }
你可以在编辑器中连接调试器,例如使用 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 内部自动创建的变量 __name__ 的值将不是 "__main__"。
因此,这行代码:
uvicorn.run(app, host="0.0.0.0", port=8000)
将不会被执行。
Info
更多信息,请查看 官方 Python 文档。
使用调试器运行代码¶
由于你直接从代码中运行 Uvicorn 服务器,你可以直接从调试器调用你的 Python 程序(你的 FastAPI 应用)。
例如,在 Visual Studio Code 中,你可以:
- 转到“调试”面板。
- “添加配置...”。
- 选择“Python”
- 使用“
Python: 当前文件(集成终端)”选项运行调试器。
然后它将启动包含你 FastAPI 代码的服务器,在你的断点处停止等。
效果可能如下:
如果你使用 Pycharm,你可以:
- 打开“运行”菜单。
- 选择“调试...”选项。
- 然后会出现一个上下文菜单。
- 选择要调试的文件(本例中为
main.py)。
然后它将启动包含你 FastAPI 代码的服务器,在你的断点处停止等。
效果可能如下: