[FastAPI] Lifespan : 생명주기 이벤트 관리

2025. 7. 8. 22:23·Back/FastAPI

Lifespan

애플리케이션 시작 전에 실행되어야 하는 로직이나 종료될 때 실행되어야 하는 로직을 관리하는 애플리케이션의 수명(Lifespan)을 관리하는 방법

왜 필요한가?
  • 애플리케이션이 사용해야 하는 리소스를 초기화하거나 설정하고, 마무리에 정리하는데 활용할 수 있음.
  • DB 커넥션풀 관리하는 것처럼 활용될 수 있겠죠.

사용방법

from contextlib import asynccontextmanager
from fastapi import FastAPI

async def start():
    print("service is started.")
    
def shutdown():
    print("service is stopped.")    

@asynccontextmanager
async def lifespan(app: FastAPI):
    # 시작점
    await start()
    
    yield
    
    # 종료점
    shutdown()

app = FastAPI(lifespan=lifespan)

@app.get("/")
async def root():
    return {"message": "Hello World"}
  • 여기서 lifespan 함수 내 yield 이전 영역(start 함수)는 애플리케이션이 요청을 받기를 시작하기 전에 실행되고
  • yield 이후 영역(shutdown 함수)은 애플리케이션이 종료 직전에 실행됩니다.

비고

  • 저는 이러한 방법을 통해서 애플리케이션 실행 전 Milvus DB의 기본 커넥션풀을 초기화하고, 종료 전 커넥션풀을 모두 해제하고 모든 연결을 끊어 리소스를 비교적 효율적이고 안전하게 정리할 수 있었습니다.

'Back > FastAPI' 카테고리의 다른 글

[FastAPI] Uvicorn / Gunicorn  (0) 2025.05.12
'Back/FastAPI' 카테고리의 다른 글
  • [FastAPI] Uvicorn / Gunicorn
6eom9eun
6eom9eun
  • 6eom9eun
    개발 공간
    6eom9eun
  • 전체
    오늘
    어제
    • 전체보기 (34)
      • Front (7)
        • flutter (2)
        • react (5)
      • Back (11)
        • FastAPI (2)
        • django (4)
        • node.js (2)
      • AI (2)
      • KT Aivle (1)
      • Coding Test (13)
        • 프로그래머스 (5)
        • 백준 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 설정
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    poetry
    OpenAI
    PYTHON
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
6eom9eun
[FastAPI] Lifespan : 생명주기 이벤트 관리
상단으로

티스토리툴바