大規模なデータを含む FastAPI での JSON 応答のパフォーマンスの向上
FastAPI ユーザーは、エンドポイント経由で大量の JSON データを返すときに大幅な遅延に遭遇します。包括的なソリューションには、データの取得、シリアル化、クライアント側の表示などのいくつかの要素への対処が含まれます。
データの抽出と読み取り
コード例で強調されているように、データはデータは最初に Pandas の read_parquet() 関数を使用して Parquet ファイルから抽出され、データが Pandas DataFrame に変換されます。効率を高めるには、大規模なデータセットを処理するために特別に設計された Dask などの代替ライブラリの利用を検討してください。 Dask の read_parquet() メソッドは、データの読み取り速度を大幅に向上させることができます。
JSON シリアル化
後続の JSON シリアル化ステップが主なパフォーマンスのボトルネックであることが判明しています。デフォルトでは、FastAPI は Python の標準 json.dumps() 関数を使用するため、最適なパフォーマンスが得られません。このプロセスを高速化するには、orjson や ujson などの代替 JSON エンコーダを使用して、シリアル化時間を大幅に短縮できます。
応答タイプの最適化
特定のシナリオでは、Pandas DataFrame を返します。 JSON 応答は、DataFrame と JSON 出力の両方に対する RAM 割り当てによりメモリの問題を引き起こす可能性があるためです。これに対処するには、ファイル パスを指定せずに df.to_json() を使用することを検討してください。これにより、JSON 出力がメモリに保存されずにクライアントに直接ストリーミングされます。
クライアント側の表示
最適化されたシリアル化技術を使用しても、クライアント側のブラウザーに大量のデータを表示すると、データの解析とレンダリングにより追加の遅延が発生する可能性があります。これを軽減するには、ブラウザ内表示の代わりにダウンロード リンクを提供するなどのオプションを検討して、データ処理をクライアントのマシンにオフロードします。
これらの手法を実装することで、開発者は、返される FastAPI エンドポイントのパフォーマンスを大幅に向上させることができます。大量の JSON データを処理し、応答性が高く効率的なユーザー エクスペリエンスを保証します。
以上が大規模データの FastAPI で JSON 応答パフォーマンスを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。