Flask と比較した FastAPI UploadFile のパフォーマンスの問題
FastAPI の UploadFile 処理は、ファイル処理の違いにより、Flask よりも遅くなる可能性があります。 Flask は同期ファイル書き込みを使用しますが、FastAPI の UploadFile メソッドは非同期であり、デフォルト サイズ 1 MB のバッファを使用します。
パフォーマンス向上ソリューション
パフォーマンスを向上するには、次の実装を行います。 aiofile と非同期でファイルを書き込むlibrary:
<code class="python">from fastapi import File, UploadFile import aiofiles @app.post("/upload") async def upload_async(file: UploadFile = File(...)): try: contents = await file.read() async with aiofiles.open(file.filename, 'wb') as f: await f.write(contents) except Exception: return {"message": "There was an error uploading the file"} finally: await file.close() return {"message": f"Successfully uploaded {file.filename}"}</code>
追加メモ
ストリーミング ソリューション
パフォーマンスをさらに向上させるには、リクエスト本文にストリームとしてアクセスすることを検討してください。本体全体をメモリまたは一時ディレクトリに保存せずに:
<code class="python">from fastapi import Request import aiofiles @app.post("/upload") async def upload_stream(request: Request): try: filename = request.headers['filename'] async with aiofiles.open(filename, 'wb') as f: async for chunk in request.stream(): await f.write(chunk) except Exception: return {"message": "There was an error uploading the file"} return {"message": f"Successfully uploaded {filename}"}</code>
以上がFastAPI の UploadFile 処理が Flask よりも遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。