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

まだコメントはありません。

まだコメントはありません。