- Pycham でスタックトレースを追ってみるのは、一度やってみる価値があります。
- 使われている変数がどんな値なのか、インスタンスであればどのような attr を持っているのか確認できます。
- FastAPI は Starlette なしでは成り立たないように見えます。
- 基本クラスも Starlette を継承して作られており、Request、Response、Router、Middleware などもすべて Starlette をベースに作られています。
- FastAPI のコードよりも starlette のコードを見ることのほうが多くなります。
- FastAPI を外して、Starlette だけでアプリを作ってみることもできそうだと感じます。
- Uvicorn ↔ Starlette ↔ FastAPI の役割がよりはっきり感じられます。
- Uvicorn: 外部通信インターフェース
- Starlette: サーバー内部動作インターフェース
- FastAPI: Starlette の上で endpoint func 記述の利便性(Depends()、Pydantic によるパラメータ検証など)を載せて Uvicorn と相互作用する存在
- ミドルウェアへの理解が少し深まりました。
- ServerErrorMiddleware → カスタムミドルウェア群 → ExceptionMiddleware の順で Request 処理が進むことが分かります。
@app.exception_handler(Exception) で付けた handler は ExceptionMiddleware で処理され、それ以外のサーバーエラーは ServerErrorMiddleware で処理されます。
- ミドルウェアのブロッキングを防ぐために、別のスレッドグループをあらためて回します.
まだコメントはありません。