Uvicorn은 파이썬 기반의 매우 빠른 ASGI(Asynchronous Server Gateway Interface) 웹 서버 구현체입니다. uvloop와 httptools를 사용하여 비동기 애플리케이션을 위한 높은 성능을 제공하며, FastAPI와 같은 ASGI 프레임워크에서 주로 사용됩니다. Uvicorn은 개발 중에는 단독으로 사용하거나, 실제 서비스 환경에서는 Gunicorn과 같은 프로세스 관리자와 함께 사용되기도 합니다.
주요 특징
ASGI 서버: WSGI의 후속 기술인 ASGI 사양을 따릅니다. ASGI는 비동기 웹 서버와 애플리케이션 간의 통신 규약을 정의합니다.
비동기 성능: asyncio와 uvloop를 기반으로 하여 비동기 요청을 매우 효율적으로 처리하여 높은 성능을 보여줍니다.
빠른 속도: httptools를 사용하여 응답 속도와 처리량이 뛰어납니다.
주요 사용처: FastAPI, Starlette와 같은 현대적인 비동기 파이썬 웹 프레임워크의 기본 서버로 사용됩니다.
개발 vs 운영: 개발 단계에서는 Uvicorn을 단독으로 사용하지만, 안정적인 운영을 위해서는 Gunicorn과 함께 사용하여 여러 Uvicorn 프로세스를 관리하고, 요청을 분산시키는 방식을 취합니다.
서버 생성
uvicorn main:app --reload
main : 모듈명, main.py
app : FastApi 로 부터 생성된 인스턴스 의미 FastAPI()
--reload : 코드 수정 시 새로고침이 됨. app.run(debug=True)