목차

  1. 개요
  2. 실행 모드
  3. 이벤트 루프와 동시성
  4. 요청 처리 흐름
  5. 멀티프로세스 아키텍처
  6. 핵심 코드 분석
  7. 실전 가이드
  8. 참고 자료

1. 개요

Uvicorn은 ASGI(Asynchronous Server Gateway Interface) 표준을 구현한 고성능 Python 웹 서버입니다.

asyncio 기반의 이벤트 루프를 사용하여 단일 프로세스 내에서 수천 개의 동시 연결을 효율적으로 처리할 수 있습니다.

핵심 특징

아키텍처 개요


flowchart TD
    A[uvicorn.run] --> B{실행 모드 선택}
    B -->|reload=True| C[ChangeReload Supervisor]
    B -->|workers>1| D[Multiprocess Supervisor]
    B -->|단일 프로세스| E[Server.run]

    C --> F[자식 프로세스]
    D --> G[워커 프로세스들]
    F --> E
    G --> E

    E --> H[Config.load]
    H --> I[Server.serve]
    I --> J[startup]
    J --> K[create_server]
    K --> L[Protocol Factory]
    L --> M[이벤트 루프]

    M --> N{요청 도착}
    N --> O[Protocol 인스턴스]
    O --> P[RequestResponseCycle]
    P --> Q[ASGI App 호출]

    style A fill:#e1f5ff
    style E fill:#ffe1e1
    style M fill:#e1ffe1
    style Q fill:#fff4e1