跳至內容

除錯

您可以在編輯器中連接偵錯器,例如使用 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:目前檔案(整合式終端機)」執行偵錯器。

然後它將使用您的 FastAPI 程式碼啟動伺服器,在您的中斷點停止,等等。

它看起來可能是這樣的


如果您使用 PyCharm,您可以

  • 開啟「執行」選單。
  • 選擇「偵錯...」選項。
  • 然後會出現一個 context 選單。
  • 選擇要偵錯的檔案(在這種情況下為 main.py)。

然後它將使用您的 FastAPI 程式碼啟動伺服器,在您的中斷點停止,等等。

它看起來可能是這樣的