Cache
Módulo de cache HTTP assíncrono para otimização de requisições a serviços hidrológicos, com suporte a TTL e invalidação seletiva por parâmetros de estação.
Índice
- Visão Geral
- Configuração
- HttpCache
- Cached HTTP fetch
- CachedAsyncHTTPClient
- cached_fetch
- invalidate_cache
- clear_cache
Visão Geral
Sistema de caching para operações HTTP com:
- Armazenamento LRU (Least Recently Used)
- Invalidação por tempo (TTL) e critérios específicos
- Suporte a requisições assíncronas
- Gerenciamento automático de capacidade
Componentes chave:
HttpCache: Núcleo do sistema de armazenamentoCachedAsyncHTTPClient: Adaptador para cliente HTTP assíncrono- Helpers para operações de cache
Configuração
Parâmetros principais via constantes:
CACHE_MAXSIZE = 100 # Capacidade máxima de itens
CACHE_TTL = 3600 # Tempo de vida em segundos (1 hora)
HttpCache
Cache para responses HTTP com implementação de TTL e invalidação manual.
Essa implementação de cache gerencia responses HTTP e permite invalidação de entradas específicas usando chaves arbitrárias.
Init
Parâmetros:
maxsize (int): Tamanho máximo do cache em número de responses guardadas.
ttl (int): Time To Live em segundos para itens do cache.
Make Key
Cria item único no cache baseado na URL e parâmetros com chave.
Parâmetros:
url (str) kwargs: Parâmetros adicionais que afetam o request.
Returns:
str: Chave do cache.
Get
Parâmetros:
key (str): Chave de item no cache.
Returns:
Optional[Any]: Retorna None se o item não existe ou foi expirado.
Set
Parâmetros:
key (str): Chave a ser alterada.
value (Any): Valor novo a ser gravado.
codigo_estacao (Optional[int]): Código da estação a ser invalidada.
tipo (Optional[StationType]): Tipo da estação a ser invalidada pcd.
Invalidate
Invalida entrada no cache baseado no código da estação e tipo pcd.
Parâmetros:
codigo_estacao (Optional[int])
tipo (Optional[StationType])
Clear
Limpa todo o cache incondicionalmente.
Cached HTTP fetch
Decorador para adicionar cache para operações.
Parâmetros:
http_client (AsyncHTTPClient, optional): Client HTTP a ser utilizado.
Defaults é None, o que cria um novo Client.
Returns:
Callable: Função decorada.
CachedAsyncHTTPClient
Wrapper sobre AsyncHTTPClient para adicionar funcionalidade de cache.
Init (CachedAsyncHTTPClient)
Parâmetros:
http_client (AsyncHTTPClient, optional): Client HTTP. Defaults to None, criando um novo Client.
fetch
Define o comportamento de um fetch junto do cache. Se GET e cache hit,retorna o que houver no cache. Se GET e cache miss, realiza a requisição. Se outra diretiva que não GET, invalida o cache e não guarda a reposta no cache. Só guarda HTTPResponses reais no cache.
Parâmetros:
url (str): A URL para a requisição.
codigo_estacao (Optional[int], optional): O código da estação a que se refere a requisição. Defaults to None.
tipo (Optional[StationType], optional): O tipo de estação a que se refere a requisição. Defaults to None.
headers (Optional[Dict[str, str]], optional): Headers adicionais para a requisição. Defaults to None.
Returns:
HTTPResponse: A resposta do servidor, obtida a partir do cache ou da requisição.
invalidate_cache
Wrapper de HttpCache.invalidate.
clear_cache
Wrapper de HttpCache.clear.
cached_fetch (helper)
Função helper para a realização da operação em CachedAsyncHTTPClient.fetch.
invalidate_cache (helper)
Função helper para a realização da operação em CachedAsyncHTTPClient.invalidate_cache.
clear_cache (helper)
Função helper para a realização da operação em HttpCache.clear.