Flask와 비교한 FastAPI UploadFile 성능 문제
FastAPI의 UploadFile 처리는 파일 처리의 차이로 인해 Flask보다 느릴 수 있습니다. Flask는 동기식 파일 쓰기를 사용하는 반면 FastAPI의 UploadFile 메소드는 비동기식이며 기본 크기가 1MB인 버퍼를 사용합니다.
향상된 성능 솔루션
성능을 향상하려면 구현 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>
추가 참고 사항
스트리밍 솔루션
더 나은 성능을 위해 다음과 같이 요청 본문에 액세스하는 것을 고려하세요. 전체 본문을 메모리나 임시 디렉터리에 저장하지 않고 스트림:
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!