28 lines
979 B
Python
28 lines
979 B
Python
from cachetools import TTLCache, cached
|
|
from config import Config
|
|
from flask import request
|
|
|
|
# Criação do cache com TTL (Time To Live)
|
|
# O tamanho máximo e o tempo de vida são configurados via config.py
|
|
ttl_cache = TTLCache(maxsize=Config.CACHE_MAX_SIZE, ttl=Config.CACHE_TTL)
|
|
|
|
def get_cache_key(*args, **kwargs):
|
|
"""
|
|
Gera uma chave única para o cache baseada na URL completa da requisição.
|
|
Isso garante que query parameters diferentes (host, driver) gerem entradas diferentes.
|
|
"""
|
|
if request:
|
|
return request.url
|
|
return str(args) + str(kwargs)
|
|
|
|
def cache_response(func):
|
|
"""
|
|
Decorador wrapper para aplicar cache nas chamadas de função.
|
|
A chave do cache será baseada na URL da request.
|
|
"""
|
|
# A função wrapper precisa aceitar args/kwargs, mas a chave é gerada por get_cache_key
|
|
@cached(cache=ttl_cache, key=get_cache_key)
|
|
def wrapper(*args, **kwargs):
|
|
return func(*args, **kwargs)
|
|
return wrapper
|