大規模な JSON データに対する FastAPI 応答の高速化
FastAPI は API を構築するための高性能フレームワークですが、大量のデータを返す場合にボトルネックに遭遇する可能性がありますJSON データの。このシナリオでは、多くの場合、時間がかかるデータの JSON 形式への変換が原因です。
オプション 1: カスタム JSON エンコーダー (更新 2)
最速のソリューションFastAPI のデフォルトの JSON エンコーダをバイパスし、orjson や ujson などのより効率的なエンコーダを使用することにあります。次のコード スニペットを考えてみましょう:
<code class="python">@app.get("/orjson") def get_data_orjson(): df = pd.read_parquet('data.parquet') return Response(orjson.dumps(df.to_dict(orient='records')), media_type="application/json")</code>
オプション 2: Pandas JSON を直接指定
さらに効率的なアプローチは、Pandas の組み込み JSON 変換を利用することです。以下に例を示します。
<code class="python">@app.get("/pandasJSON") def get_data_pandasJSON(): df = pd.read_parquet('data.parquet') return Response(df.to_json(orient="records"), media_type="application/json")</code>
オプション 3: チャンク ストリーミング
非常に大きなデータ セットの場合は、メモリの問題を回避するためにチャンク ストリーミングを検討してください。 Pandas は、増分データ処理のためのチャンクサイズ パラメーターを備えた read_csv や read_parquet などの関数を提供します。
オプション 4: Dask DataFrame
利用可能なメモリを超えるデータについては、Dask DataFrame ライブラリが使用されます。を使用すると、大規模なデータを効率的に処理して JSON に変換できます。 Dask は並列計算を可能にし、通常の Pandas 操作でパフォーマンスの問題を引き起こす可能性のある大規模なデータセットを処理できます。
パフォーマンスの比較
提供されているサンプル コードを使用して、Dask のパフォーマンスを比較できます。さまざまなアプローチを直接体験してください。アプリを実行し、各エンドポイント (/defaultFastAPIencoder、/orjson、/ujson、/pandasJSON) にアクセスして、応答時間を観察します。
追加の考慮事項
Large表示: JSON データがクライアント側での表示を目的としている場合、遅延して表示される可能性があります。これは、大量のデータを処理する際のブラウザのパフォーマンス制限によるものです。
データのダウンロード: ユーザー データのダウンロードを容易にすることは、より効率的なソリューションです。応答で Content-Disposition ヘッダーを使用して、ファイルをダウンロードする必要があることを示すことができます。
要約すると、大規模な JSON データに対する FastAPI の応答時間を最適化するには、効率と効率を優先するデータ変換方法と技術を慎重に検討する必要があります。スケーラビリティ。
以上が大規模な JSON データの FastAPI 応答時間を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。