FastAPI UploadFile-Leistungsprobleme im Vergleich zu Flask
Die UploadFile-Verarbeitung von FastAPI kann aufgrund von Unterschieden in der Dateiverarbeitung langsamer sein als die von Flask. Flask verwendet synchrones Dateischreiben, während die UploadFile-Methoden von FastAPI asynchron sind und einen Puffer mit einer Standardgröße von 1 MB verwenden.
Verbesserte Leistungslösung
Um die Leistung zu verbessern, implementieren Sie Datei asynchron mit der aiofiles-Bibliothek schreiben:
<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>
Zusätzliche Hinweise
Streaming-Lösung
Für eine noch bessere Leistung sollten Sie den Zugriff auf den Anforderungstext als in Betracht ziehen ein Stream, ohne den gesamten Körper im Speicher oder in einem temporären Verzeichnis zu speichern:
<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>
Das obige ist der detaillierte Inhalt vonWarum ist die UploadFile-Verarbeitung von FastAPI langsamer als die von Flask?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!