FastAPI, path operation functions - 경로 함수

moredev·2024년 3월 6일

FastAPI

목록 보기
2/2

함수 선언

  • await를 지원하지 않는 라이브러리를 사용할 때는 일반적인 def를 사용해 선언한다.
  • await를 사용해 호출하는 라이브러리이거나, 비동기적으로 함수가 동작한다면 async def를 사용해 선언한다.

동기 라이브러리 함수의 비동기적 실행

FastAPI는 동기 라이브러리도 비동기적으로 실행한다.

  • FastAPI는 경로 함수가 일반적인 함수 def로 선언되어 있으면, 직접 호출하지 않고 외부 스레드 풀에서 실행된다.
    → 서버가 블록되지 않고, 비동기적으로 처리된다.
# Non-block
@router.get("")
def sync():
  results = some_library()
  return results
  • 경로 함수가 비동기 함수 async def로 선언되어 있으면 동기 라이브러리의 함수를 이벤트루프에서 처리하여 서버가 블록된다.
    → 비동기적으로 함수를 호출
# Block
@router.get("")  
async def async():
  results = await some_library()
  return results
  • --worker 옵션을 통해 비동기적으로 처리
    worker로 실행하면 입력한 인수의 개수만큼 프로세스가 생성되어 동작하여, worker 개수만 처리할 수 있다.
@router.get("")  
def sync():
  results = some_library()
  return results

출처: FastAPI 공식 문서

0개의 댓글