Linuxpia/웹 프로그램

[FastAPI] 비동기 처리가 가능한 async 키워드

Linuxpia4U 2024. 3. 2. 03:38
반응형

다음 함수를 설명해 주세요.

caption: FastAPI 파이썬 코딩

 

이미지의 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 서버에서 실행될 때 성능 이점을 제공합니다.

 
반응형