コンテンツにスキップ

デバッグ

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 内の自動変数には、値が "__main __" の変数 __name__ はありません。

したがって、以下の行:

    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 コードでサーバーが起動され、ブレークポイントで停止したりするでしょう。

以下の様な画面になります: