デバッグ¶
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 コードでサーバーが起動され、ブレークポイントで停止したりするでしょう。
以下の様な画面になります: