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

사이드 프로젝트로 API 서버를 만들고 있는데, 특정 엔드포인트에서 외부 API를 호출하는 로직을 추가했습니다. 그런데 요청이 몰리면 서버 전체가 멈춘 것처럼 응답 속도가 급격히 느려지는데 왜 이러는지 모르겠어요.

코드:

from fastapi import FastAPI
import time
import requests

app = FastAPI()

@app.get("/slow")
async def slow_endpoint():
    # 외부 API 호출을 가정
    response = requests.get("https://httpbin.org/delay/3")
    return {"message": "done"}

@app.get("/fast")
async def fast_endpoint():
    return {"message": "fast"}

오류: /slow 엔드포인트에 요청을 여러 개 보내면, 아무런 연산이 없는 /fast 엔드포인트의 응답까지 같이 수 초 이상 대기 상태가 됨.

시도: requests 대신 httpx를 써보려고 했는데 설정이 복잡해서 일단 requests로 테스트 중이고, 서버 워커 수를 늘려봤지만 근본적인 해결이 안 되는 것 같습니다.

질문: async def로 정의한 함수 안에서 requests 같은 동기 라이브러리를 사용하면 이벤트 루프가 차단되어 다른 요청까지 영향을 주는 게 맞나요?

모든 이야기1464

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

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