FastAPIとは

FastAPIは、Pythonの非常に高速な(高性能)、使いやすい、モダンな、高速(高性能)なWebフレームワークです。これは、Python 3.6以降の型ヒントに基づいています。

FastAPIの主な特徴は次のとおりです:

  • 高速: NodeJSやGoと同等のパフォーマンスを持つPythonフレームワークです。
  • 高生産性: 2倍の開発速度を提供します。開発者のエラーを減らし、直感的なエディタのサポートを提供します。
  • 簡単: 設計が簡単で、使いやすいです。ドキュメンテーションが充実しています。
  • 短い: コードの重複を最小限に抑え、複数の機能を持つパラメータを1つにまとめることができます。
  • 堅牢: プロダクションでの使用に適しています。自動対話型ドキュメンテーションを持っています。
  • 基準に準拠: APIの定義にOpenAPI(以前はSwagger)とJSONスキーマを使用しています。これにより、自動クライアントコード生成が可能になります。

これらの特徴により、FastAPIは現代のWebアプリケーションの開発に非常に適したフレームワークとなっています。

リクエストの処理時間をログに記録するためのミドルウェア

FastAPIでは、リクエストの処理時間をログに記録するためにミドルウェアを使用することができます。ミドルウェアは、リクエストが処理される前後に動作する関数で、リクエストやレスポンスを変更したり、特定のタスクを実行したりすることができます。

以下に、リクエストの処理時間をログに記録するためのミドルウェアの一例を示します。

from fastapi import FastAPI, Request
import time
import logging

app = FastAPI()

@app.middleware("http")
async def log_duration(request: Request, call_next):
    start_time = time.time()
    response = await call_next(request)
    process_time = time.time() - start_time
    logging.info(f"Request duration: {process_time} secs")
    return response

このミドルウェアは、リクエストが処理される前に現在の時間を記録し、リクエストが処理された後に再度時間を記録して処理時間を計算します。その後、この情報をログに記録します。

このように、FastAPIのミドルウェアを使用すると、リクエストの処理時間を簡単にログに記録することができます。これは、パフォーマンスのモニタリングやデバッグに非常に役立ちます。

カスタムルータの実装

FastAPIでは、ルーティングのためにカスタムルータを作成することができます。これにより、特定のエンドポイントに対するリクエストの処理をより柔軟に制御することができます。

以下に、カスタムルータの基本的な実装例を示します。

from fastapi import APIRouter, FastAPI

app = FastAPI()
router = APIRouter()

@router.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

app.include_router(router, prefix="/custom")

この例では、APIRouterを使用して新しいルータを作成し、そのルータにエンドポイントを追加しています。そして、include_routerメソッドを使用して、このルータをメインのFastAPIアプリケーションに追加しています。prefixパラメータは、このルータのすべてのエンドポイントに適用されるURLプレフィックスを指定します。

このように、FastAPIのカスタムルータを使用すると、アプリケーションのルーティングをより効率的に管理することができます。これは、大規模なアプリケーションやマイクロサービスの開発に特に有用です。

ログ出力の確認

FastAPIアプリケーションでログ出力を確認するためには、通常、標準出力またはログファイルを確認します。

以下に、Pythonの標準ライブラリであるloggingモジュールを使用してログを設定し、ログ出力を確認する基本的な手順を示します。

  1. ログの設定:
import logging

logging.basicConfig(level=logging.INFO)

このコードは、ログレベルをINFOに設定し、INFOレベル以上のすべてのログメッセージが出力されるようにします。

  1. ログの出力:
logging.info("This is an info message")

このコードは、INFOレベルのログメッセージを出力します。

  1. ログの確認:

ログメッセージは、標準出力(通常はコンソール)に出力されます。したがって、アプリケーションを実行しているコンソールを確認することで、ログメッセージを確認することができます。

また、basicConfig関数にfilenameパラメータを指定することで、ログメッセージをファイルに出力することも可能です。

logging.basicConfig(level=logging.INFO, filename='app.log')

このコードは、ログメッセージをapp.logという名前のファイルに出力します。このファイルをテキストエディタで開くことで、ログメッセージを確認することができます。

以上の手順により、FastAPIアプリケーションでのログ出力とその確認方法について理解を深めることができます。

カテゴリー: 未分類

0件のコメント

コメントを残す

アバタープレースホルダー

メールアドレスが公開されることはありません。 が付いている欄は必須項目です