Problèmes de performances de FastAPI UploadFile par rapport à Flask
La gestion de UploadFile de FastAPI peut être plus lente que celle de Flask en raison des différences dans la gestion des fichiers. Flask utilise l'écriture de fichiers synchrone, tandis que les méthodes UploadFile de FastAPI sont asynchrones et utilisent un tampon avec une taille par défaut de 1 Mo.
Solution de performances améliorées
Pour améliorer les performances, implémentez écriture de fichiers de manière asynchrone avec la bibliothèque aiofiles :
<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>
Notes supplémentaires
Solution de streaming
Pour des performances encore meilleures, envisagez d'accéder au corps de la requête comme un flux sans stocker l'intégralité du corps en mémoire ni dans un répertoire temporaire :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!