除錯¶
您可以在編輯器中連接偵錯器,例如使用 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 程式碼啟動伺服器,在您的中斷點停止,等等。
它看起來可能是這樣的