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