FastAPI での大規模なデータセットの JSON 応答時間の最適化
問題:
大量の JSON データをFastAPI エンドポイントは著しく遅く、約 1 分かかります。データは、最初に json.loads() を使用して寄せ木細工のファイルからロードされ、返される前にフィルタリングされます。データを配信するためのより迅速なアプローチを求めています。
解決策:
応答時間の遅さは、parse_parquet() 関数内の複数の JSON 変換に起因します。 FastAPI は、戻り値を json.dumps() でシリアル化する前に、jsonable_encoder を使用して自動的にエンコードしますが、これは時間のかかるプロセスです。 orjson や ujson などの外部 JSON エンコーダを使用すると、速度が向上する可能性があります。
ただし、最も効率的な解決策は、不必要な JSON 変換を避けることです。次のコードは、カスタム APIRoute クラスを利用して、pandas DataFrame からの直接 JSON 応答を有効にします。
<code class="python">from fastapi import APIRoute class TimedRoute(APIRoute): # Custom handler for capturing response time def get_route_handler(self): original_route_handler = super().get_route_handler() async def custom_route_handler(request): before = time.time() response = await original_route_handler(request) duration = time.time() - before response.headers["Response-Time"] = str(duration) print(f"route duration: {duration}") return response return custom_route_handler</code>
このコードにより、さまざまなデータ変換メソッドの応答時間を比較できます。 160,000 行、45 列のサンプル寄木細工ファイルを使用すると、次の結果が得られました:
- デフォルト FastAPI エンコーダー (json.dumps()): 最も遅い
- orjson: デフォルトのエンコーダと同等
- ujson: orjson よりわずかに高速
- PandasJSON (df.to_json()): 最も大幅に高速化
ユーザー エクスペリエンスを向上させるには、ブラウザー内にデータを表示するのではなく、ダウンロードを開始するために、Content-Disposition ヘッダーにattachment パラメーターとファイル名を設定することを検討してください。このアプローチはブラウザーの制約を回避し、プロセスを高速化します。
さらに、Dask は大規模なデータセットの最適化された処理を提供し、パンダの代替手段を提供します。大量のデータを処理するときにメモリの問題を回避するために、ストリーミングまたは非同期応答も考慮される場合があります。
以上がFastAPI で大規模なデータセットの JSON 応答時間を最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
