CoWithMe

Flask vs FastAPI: 비동기 처리의 차이와 실제 적용

이영훈닷컴 2024. 7. 8. 09:30
728x90

두 프레임워크를 직접 비교하고 있음을 나타냅고 있으며 주요 비교 포인트인 '비동기 처리'를 명시 합니다.

 

Flask의 비동기 처리 Flask는 기본적으로 동기 방식으로 동작합니다. 이는 한 번에 하나의 요청만 처리할 수 있다는 뜻입니다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    # 이 함수가 실행되는 동안 다른 요청은 대기합니다
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

 

Flask에서 비동기 처리를 하려면 추가적인 라이브러리(예: Celery)를 사용해야 합니다.

FastAPI의 비동기 처리 FastAPI는 기본적으로 비동기 방식을 지원합니다. 이는 여러 요청을 동시에 처리할 수 있다는 뜻입니다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    # 이 함수가 실행되는 동안 다른 요청은 대기합니다
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

 

실제 비동기 처리의 이점을 보여주는 

import asyncio
from fastapi import FastAPI

app = FastAPI()

async def slow_operation():
    await asyncio.sleep(1)  # 1초 대기 (I/O 작업을 시뮬레이션)
    return "작업 완료"

@app.get('/fast')
async def fast_route():
    return {"message": "이 응답은 즉시 반환됩니다"}

@app.get('/slow')
async def slow_route():
    result = await slow_operation()
    return {"message": result}

'/fast' 경로는 즉시 응답을 반환하고, '/slow' 경로는 1초 후에 응답을 반환합니다.

FastAPI의 비동기 특성 덕분에 '/slow' 경로가 처리되는 동안에도 다른 요청들을 처리할 수 있습니다.

 

결론:
Flask: 간단하고 직관적이지만, 기본적으로 동기 처리. 대규모 동시 요청 처리에 제한이 있을 수 있습니다.
FastAPI: 비동기 처리를 기본 지원. 동시에 많은 요청을 효율적으로 처리할 수 있어 높은 성능이 필요한 애플리케이션에 적합합니다.

프로젝트의 요구사항에 따라 적절한 프레임워크를 선택하는 것이 중요합니다.

 

비오는날은 떡볶이가 짱!!!!

728x90