동시 작업을 위한 async 사용

FastAPI 입문

Matt Eckerle

Software and Data Engineering Leader

왜 async인가? 동시 버거!

순차 버거

일렬로 서서 순차적으로 조리·서빙되는 버거를 기다리는 손님들

동시 버거

동시에 조리·서빙되어 줄이 진행되는 버거 가게 손님들

1 https://fastapi.tiangolo.com/async/
FastAPI 입문

실전 async

순차 버거

버거를 가져오는 함수 정의

# 이 코드는 비동기가 아님
def get_sequential_burgers(number: int):
    # 순차 처리
    return burgers

함수를 순차적으로 호출

burgers = get_burgers(2)

동시 버거

버거를 가져오는 함수 정의

async def get_burgers(number: int):
    # 비동기 처리
    return burgers

함수를 비동기로 호출

burgers = await get_burgers(2)
FastAPI 입문

FastAPI와 async

다음이 가능하면:

results = await some_library()

그럼 async def를 사용하십시오:

@app.get('/')
async def read_results():
    results = await some_library()
    return results

참고 awaitasync def로 만든 함수 내부에서만 사용하십시오

FastAPI 입문

async를 언제 사용할까

async 사용 시점

애플리케이션이 다른 시스템의 응답을 기다려야 할 때

  • 외부 API
  • 데이터베이스

예시

  • HTTP 요청
  • 데이터베이스 조회
  • 파일 읽기

async 비권장

CPU 집약 작업

예시

  • 오디오/이미지 처리
  • 컴퓨터 비전
  • 머신러닝
  • 딥러닝

확신이 없을 때

FastAPI 입문

연습해 봅시다!

FastAPI 입문

Preparing Video For Download...