Python
[FastAPI] startup, shutdown 이벤트 처리
비번변경
2025. 1. 23. 15:36
개요
여타 다른 애플리케이션처럼 FastAPI 애플리케이션 또한 처음 실행을 시작할 때 필요한 설정값을 읽는다던가, 실행을 종료할 때 데이터를 정리하는 등의 작업이 필요할 수 있다. FastAPI는 이러한 종류를 작업을 지원하기 위해 @FastAPI.on_event라는 데코레이터를 제공한다. 이번 글에서 사용 방법을 간단히 알아본다.
@FastAPI.on_event
FastAPI.on_event 데코레이터는 애플리케이션이 시작하기 전이나 종료될 때 실행되어야 하는 이벤트 핸들러를 정의한다. startup, shutdown 이벤트에 대한 핸들러만 정의할 수 있으며, 이벤트 핸들러는 두 개 이상 정의할 수 있다.
참고로 startup 이벤트 핸들러의 경우 모든 이벤트 핸들러가 완료될 때까지 애플리케이션은 요청을 수신하지 않는다.
🤔 on_event is deprecated, use lifespan event handlers instead.
조금더 확인해보니 on_event는 이미 deprecated되었다고 한다. 대신 lifespan 이벤트를 사용하는 것 같은데, 이 부분은 추후에 알아보려고 한다.
일단 이번 글에서는 on_event에 대해서 적어둔다.
예시
on_event 데코레이터는 간단하게 정의한 핸들러 함수명 위에 기재해 주는 걸로 간단하게 사용할 수 있다.
startup
예시로 간단하게 애플리케이션 시작 시 데이터를 초기화하고 메세지를 출력하는 작업을 정의하고 적용했다.
from fastapi import FastAPI
data = {}
app = FastAPI()
@app.on_event('startup')
async def startup_event():
data['defaut_message'] = 'Hello world!'
print("Application initialize")
@app.get("/")
async def root():
return data['defaut_message']
실행해보면 정의한 startup_event 함수가 잘 실행된 모습을 확인할 수 있다.
shutdown
shutdown 이벤트도 startup 이벤트와 동일하게 적용한다.
from fastapi import FastAPI
data = {}
app = FastAPI()
@app.on_event('shutdown')
async def shutdown_event():
print("Application shutdown")
@app.get("/")
async def root():
return data['defaut_message']
마찬가지로 애플리케이션 동작 시 shutdown_event 함수가 호출된 모습을 확인할 수 있다.
참고 문서
https://fastapi.tiangolo.com/ko/advanced/events/
https://fastapi.tiangolo.com/advanced/events/