ホームページ  >  記事  >  バックエンド開発  >  大規模な JSON データの FastAPI 応答時間を最適化するにはどうすればよいですか?

大規模な JSON データの FastAPI 応答時間を最適化するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-18 23:00:30825ブラウズ

How to Optimize FastAPI Response Time for Large JSON Data?

大規模な 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。