デバッグ¶
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
内に自動的に作成された変数には、値が "__main__"
の変数 __name__
は含まれません。
そのため、行
uvicorn.run(app, host="0.0.0.0", port=8000)
は実行されません。
情報
詳細については、Python の公式ドキュメントを参照してください。
デバッガでコードを実行する¶
Uvicorn サーバーをコードから直接実行しているため、デバッガから Python プログラム (FastAPI アプリケーション) を直接呼び出すことができます。
たとえば、Visual Studio Code では、次のことができます。
- 「デバッグ」パネルに移動します。
- 「構成の追加...」を選択します。
- 「Python」を選択します。
- 「
Python: 現在のファイル (統合ターミナル)
」オプションを使用してデバッガを実行します。
その後、FastAPI コードでサーバーが起動し、ブレークポイントで停止するようになります。
次のようになります。
Pycharm を使用する場合は、次のことができます。
- 「実行」メニューを開きます。
- 「デバッグ...」オプションを選択します。
- コンテキストメニューが表示されます。
- デバッグするファイル (この場合は
main.py
) を選択します。
その後、FastAPI コードでサーバーが起動し、ブレークポイントで停止するようになります。
次のようになります。