调试¶
您可以连接编辑器中的调试器,例如使用 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__
将具有字符串 "__main__"
作为值。
因此,以下部分:
uvicorn.run(app, host="0.0.0.0", port=8000)
将运行。
如果您导入该模块(文件),则不会发生这种情况。
因此,如果您有另一个文件 importer.py
,其中包含:
from myapp import app
# Some more code
在这种情况下,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 代码启动服务器,在您的断点处停止,等等。
以下是可能的外观: