FastAPI の UploadFile が Flask に比べて遅いのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-07 15:35:03
オリジナル
613 人が閲覧しました

Why is FastAPI's UploadFile Slow Compared to Flask?

FastAPI UploadFile は Flask と比較して遅い

問題

FastAPI と Python リクエストを使用して 100 MB ファイルをアップロードするには約 128 秒かかり、Flask よりも大幅に時間がかかりますFlask を使用する場合は 0.5 秒かかります。

Response

アップロード時間の違いは主に、Flask と比較した FastAPI でのデータの処理方法によるものです。ファイルのアップロードを処理するとき、FastAPI は、受信リクエスト データのデフォルトの最大サイズが 1 MB の SpooledTemporaryFile を利用します。ファイル サイズが 1 MB を超えると、データはディスク上の一時ファイルに書き込まれ、アップロード プロセスが遅くなります。

考えられる解決策

1.同期ファイルの書き込み

async def キーワードの代わりに通常の def キーワードを使用してエンドポイントを定義し、ファイルを同期的に書き込みます。

2.非同期書き込み (aiofiles を使用)

async def キーワードを使用してエンドポイントを定義し、非同期ファイル書き込みには aiofiles を使用します。この方法では、ファイル操作が完了するまで待つ必要があります。

3. request.stream() の使用

request.stream() を使用して、リクエスト本文にストリームとしてアクセスします。この方法を使用すると、本体全体をメモリやディスクに保存せずにデータのチャンクを処理できるため、アップロードのパフォーマンスが向上します。

主な推奨事項

大きなファイルをアップロードするときに最適なパフォーマンスを得るには、リクエストの使用を検討してください。 .stream() メソッド。このアプローチにより、1 MB の最大サイズ制限が回避され、追加の書き込み/読み取り操作なしでデータ チャンクを直接処理できるようになります。

以上がFastAPI の UploadFile が Flask に比べて遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート