コンテンツへスキップ

デバッグ

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__ (Pythonによって自動的に作成されます) は、値として文字列 "__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を使用している場合は、次のようにできます。

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

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

次のようになります。