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 |
|---|