본문으로 바로가기
COMMUNITY모든 이야기

토이 프로젝트로 간단한 API 서버를 만들고 있는데, 특정 엔드포인트에서 외부 API를 호출하는 과정이 너무 느려서 고민입니다.

코드:

import time
import asyncio
from fastapi import FastAPI

app = FastAPI()

def heavy_task():
    time.sleep(2)
    return "Done"

@app.get("/")
async def root():
    result = heavy_task()
    return {"message": result}

오류: 여러 사용자가 동시에 요청을 보냈을 때, 한 명의 요청이 처리될 때까지 다른 모든 요청이 멈춰 있다가 순차적으로 응답이 오는 현상이 발생합니다.

시도: 함수 앞에 async def를 붙여보았지만, 내부의 time.sleep 때문에 여전히 전체 서버가 멈추는 것 같습니다.

질문: async 함수 내부에서 time.sleep 같은 동기식 blocking 함수를 사용하면 왜 이벤트 루프가 멈추는 것이며, 이를 어떻게 해결해야 하나요?

모든 이야기1455

가벼운 안부부터 깊은 생각까지, 함께 나눠요.

글쓰기
총 1455개의 이야기
댓글