다음 함수를 설명해 주세요.
이미지의 async
키워드는 FastAPI를 사용한 비동기 함수의 정의에 사용되고 있습니다. async
키워드는 Python에서 비동기 프로그래밍을 가능하게 하는 문법적 요소로, 해당 함수가 'coroutine'이라고 불리는 특별한 유형의 함수임을 나타냅니다.
FastAPI는 비동기 프로그래밍을 기본으로 하는 웹 프레임워크이며, async def
로 정의된 함수들은 비동기 실행이 가능합니다. 이는 함수 내부에서 await
키워드를 사용하여 I/O 바운드 작업(예: 데이터베이스 조회, 네트워크 요청 등)이 완료될 때까지 기다리는 동안, 이벤트 루프가 다른 작업을 계속 처리할 수 있도록 합니다. 그 결과, 높은 동시성과 향상된 성능을 가진 애플리케이션을 만들 수 있습니다.
함수에 대한 설명
루트 경로 함수:이 함수는 루트 경로 (/
)로 들어오는 HTTP GET 요청을 처리하며, 비동기적으로 실행됩니다. 현재 함수 내에는 await
키워드를 사용하는 비동기 작업이 없으므로, 이 함수는 즉시 {"Hello": "World"}
를 반환합니다.
@app.get("/")
async def read_root():
return {"Hello": "World"}
경로 매개변수가 있는 함수:이 함수는 /items/{item_id}
경로로 들어오는 요청을 처리하며, 여기서 {item_id}
는 경로 매개변수로, 각 요청의 URL에서 동적으로 추출됩니다. 이 함수 역시 비동기적으로 실행되지만, 실제로 await
를 사용하는 비동기 호출이 없어서 요청된 item_id
와 쿼리 파라미터 q
를 즉시 반환합니다.
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
정리
FastAPI에서 이와 같이 async
키워드를 사용하면, 비동기 라이브러리를 활용한 데이터베이스 연동, 네트워크 요청 처리 등이 가능해집니다. 또한 async
함수는 기본적으로 비동기 I/O 작업에 최적화된 uvicorn
과 같은 ASGI 서버에서 실행될 때 성능 이점을 제공합니다.
'Linuxpia > 웹 프로그램' 카테고리의 다른 글
[FastAPI] FastAPI에 적용된 어노테이션(Annotation)이란? (139) | 2024.03.04 |
---|---|
[FastAPI] 파이썬 라이브러리에서 Pydentic이란? (125) | 2024.03.03 |
[FastAPI] API란 무엇인가요? (109) | 2024.03.01 |
[FastAPI] ASGI란 어떤 것인가요? (143) | 2024.02.29 |
[FastAPI] 가상환경 생성에서 FastAPI 애플리케이션 테스트까지 (127) | 2024.02.28 |