FastAPI と Python リクエストを使用して 100 MB ファイルをアップロードするには約 128 秒かかり、Flask よりも大幅に時間がかかりますFlask を使用する場合は 0.5 秒かかります。
アップロード時間の違いは主に、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 サイトの他の関連記事を参照してください。