コンテンツへスキップ

デバッグ

例えば、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 を使用している場合は、次のようにできます。

  • 「実行」メニューを開きます。
  • 「デバッグ...」オプションを選択します。
  • 次に、コンテキストメニューが表示されます。
  • デバッグするファイルを選択します(この場合は main.py)。

これにより、FastAPI コードでサーバーが起動し、ブレークポイントで停止するなどが行われます。

これは次のように表示されます。