[python] Flask-RESTful에서 캐슁을 통한 응답시간 단축 방법

Flask-RESTful은 빠른 API 개발을 위해 사용되는 인기 있는 파이썬 웹 프레임워크입니다. 그러나 때로는 API의 응답시간을 최적화하는 것이 중요할 수 있습니다. 이를 위해 Flask-RESTful에서 캐싱을 활용하여 응답시간을 단축하는 방법에 대해 알아보겠습니다.

1. 캐시란 무엇인가?

캐시는 이전에 계산된 결과나 데이터를 저장해 두어, 동일한 계산이나 데이터 요청이 있을 때 다시 계산하지 않고 저장된 값을 반환함으로써 응답시간을 줄이는 메커니즘입니다. 캐시는 주로 메모리나 디스크에 저장되며, 데이터의 빠른 접근을 가능케 합니다.

2. Flask-Caching 라이브러리 설치

Flask-RESTful에서 캐싱을 구현하기 위해서는 Flask-Caching 라이브러리를 설치해야 합니다. 다음 명령어를 사용하여 설치하세요:

pip install Flask-Caching

3. Flask-Caching 설정

Flask-Caching을 사용하기 위해 Flask 애플리케이션의 설정에 다음과 같은 옵션을 추가해야 합니다:

from flask import Flask
from flask_caching import Cache

app = Flask(__name__)
# 캐싱을 위한 Flask-Caching 설정
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)

위의 코드에서 CACHE_TYPE은 캐시를 저장할 위치를 지정하는데, simple은 메모리 기반의 캐시 저장소를 사용한다는 의미입니다. 다른 옵션으로는 Redis나 Memcached 등을 사용할 수도 있습니다.

4. 캐싱할 함수 작성

캐시를 적용하고자 하는 함수를 작성해야 합니다. Flask-RESTful에서는 리소스를 관리하는 클래스에 해당 함수를 정의하는 것이 일반적입니다. 다음은 캐시를 적용한 GET 요청을 처리하는 예시입니다:

from flask_restful import Resource
from flask_caching import make_cache_key

class MyResource(Resource):
    @cache.cached(timeout=60, key_prefix=make_cache_key)
    def get(self):
        # 캐시되는 로직
        return {'message': 'Hello, World!'}

@cache.cached 데코레이터는 해당 함수의 캐싱을 활성화하는 역할을 합니다. timeout 옵션은 캐시의 만료 시간을 초 단위로 지정합니다. key_prefix파라미터는 캐시키를 생성하는 함수를 지정하는데, make_cache_key 함수는 Flask-Caching에서 제공하는 함수입니다. 이 함수를 사용하여 요청에 맞는 고유한 캐시키를 생성할 수 있습니다.

5. 테스트

위의 예시 코드를 실행하고, GET 요청을 수행하면 캐시가 작동하는 것을 확인할 수 있습니다. 첫 번째 요청은 함수를 실행하고 결과를 캐시에 저장하므로 어느정도 시간이 소요될 수 있습니다. 그러나 두 번째 요청부터는 캐시된 값을 반환하여 응답시간이 크게 단축될 것입니다.

Flask-RESTful에서 제공하는 Flask-Caching을 활용하면 쉽게 캐싱 기능을 적용하여 응답시간을 단축할 수 있습니다. 이를 통해 API의 성능을 개선하고 사용자 경험을 향상시킬 수 있습니다.

참고 자료