FastAPI는 빠른 속도와 간결한 API 개발을 위한 Python 웹 프레임워크입니다. API 응답을 더 빠르게 만들기 위해 인메모리 캐싱을 사용할 수 있습니다. 이번 블로그에서는 FastAPI에서 인메모리 캐싱 처리하는 방법에 대해 알아보겠습니다.
1. 라이브러리 설치
FastAPI에서 인메모리 캐싱을 사용하기 위해 cachetools
라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.
pip install cachetools
2. 캐시 설정
캐시를 사용하기 위해 FastAPI 아래에 Cachetools 모듈을 import합니다.
from fastapi import FastAPI
from cachetools import TTLCache
cache = TTLCache(maxsize=100, ttl=60)
위 코드에서 TTLCache
는 Time-To-Live 기능이 있는 캐시 객체를 생성하기 위한 클래스입니다. maxsize
는 캐시에 저장될 수 있는 최대 아이템 수이며, ttl
은 아이템이 캐시에 저장된 후 유지되는 시간입니다.
3. 인메모리 캐싱 적용
FastAPI 앱 내에서 캐싱을 적용하려면 @app.get
데코레이터 아래에서 해당 함수를 정의하고, 캐싱하려는 데이터를 캐시에 저장하고 반환하는 코드를 작성합니다.
@app.get("/items/{item_id}")
def get_item(item_id: int):
if item_id in cache:
return cache[item_id]
else:
item = fetch_item_from_database(item_id)
cache[item_id] = item
return item
위 예제에서 get_item
함수는 /items/{item_id}
엔드포인트에서 실행되며, 요청된 item_id
에 해당하는 데이터를 캐시에서 가져오거나 데이터베이스에서 조회하여 캐시에 저장합니다.
4. 캐시 데이터 갱신
FastAPI에서 캐시 데이터를 갱신하는 경우, 해당 데이터에 대한 캐시를 갱신하거나 삭제해야 합니다. 아래 예제는 캐시 데이터를 갱신할 때 cache.pop()
메서드를 사용하는 예시입니다.
@app.put("/items/{item_id}")
def update_item(item_id: int, item: str):
update_item_in_database(item_id, item)
cache.pop(item_id)
return {"message": "Item updated successfully"}
위 예제에서 update_item
함수는 /items/{item_id}
엔드포인트에서 실행되며, 데이터베이스에서 아이템을 갱신한 후 해당 아이템의 캐시를 갱신 또는 삭제합니다.
결론
FastAPI에서 인메모리 캐싱을 사용하면 API의 응답 속도를 빠르게 하고, 데이터베이스 조회 등의 작업을 줄일 수 있습니다. 이번 블로그에서는 FastAPI에서 인메모리 캐싱 처리하는 방법에 대해 소개했습니다. 캐싱을 적용하면 성능 개선과 서버 부하 감소를 이룰 수 있으니, 적절하게 활용해보시기 바랍니다.
참고 자료
- FastAPI 공식 문서: https://fastapi.tiangolo.com
- Cachetools 공식 문서: https://cachetools.readthedocs.io