모델 파일을 실행시킬 때 uvicorn 을 사용하여 실행시키게 됩니다.
FastaAPI나 Starlette로 웹 api를 개발한 경험이 있다면 아마 다음 명령어를 실행해본 적이 있을 것입니다.
uvicorn main:app --reload
이 명령어 속에는 비동기 python 웹 프레임 워크의 핵심이 있습니다.
오늘은 FastAPI를 실서비스로 구동할 때 필수로 사용하는 uvicorn에 대해 작성해보겠습니다.
🌐 Uvicorn이란?
Uvicorn은 python의 비동기 웹 프레임워크를 실행하기 위한 agsi 서버입니다. 쉽게 말해, fastapi로 만든 api를 실제 웹 요청을 받을 수 있는 "서버"형태로 실행해주는 엔진입니다.
🔍 왜 WSGI가 아니라 ASGI인 이유?
전통적인 Django나 Flask 에서는 wsgi라는 동기 기반 표준을 사용합니다. 하지만 비동기 처리, websocket, 스트리밍 api 같은 실시간 기능을 지원하려면 AGSI 라는 새로운 비동기 표준이 필요합니다.
WSGI: 한 번에 하나의 요청만 처리 ( 동기)
AGSI: 여러 요청을 동시에 처리 가능 ( 비동기 )
따라서 FastAPI와 같은 처리 프레이무어크는 AGSI 서버인 uvicorn을 사용해야합니다.
⚙️ Uvicorn 기본 실행 방법
옵션
main:app main.py파일의 app = FastAPI()객체
--host 0.0.0.0 외부 접속 허용
--port 8000 사용할 포트
--reload 코드 수정 시 자동 재시작 ( 개발 환경에서 유용 )
Uvicorn은 그 자체로 조용한 조력자이지만, FastAPI의 성능과 실시간성을 살리는 데 필수적인 존재입니다.