Skip to main content

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

  1. Visão Geral
  2. Configuração
  3. HttpCache
  4. Cached HTTP fetch
  5. CachedAsyncHTTPClient
  6. cached_fetch
  7. invalidate_cache
  8. 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 armazenamento
  • CachedAsyncHTTPClient: 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.