O que Armazenamento JSONL faz?
Use este skill quando uma tarefa agendada precisar lembrar o que já fez — alertas emitidos, IDs processados, eventos capturados — mas um banco de dados for exagero. JSON Lines (um objeto JSON por linha) é amigável para anexação, legível por humanos, pesquisável com grep e permite streaming sem carregar o arquivo inteiro. Esse auxiliar adiciona anexações atômicas, leituras em streaming que sobrevivem a uma linha corrompida e append_unique(record, key) para que o mesmo ID nunca seja escrito duas vezes entre execuções.
Quando invocar
- O usuário diz: "registrar resultados em um arquivo JSONL", "anexar eventos ao disco", "deduplicar por ID entre execuções", "manter um histórico simples sem banco de dados".
- Um script cron ou agendado precisa de estado durável entre execuções em um arquivo simples.
Quando NÃO invocar
- Você precisa de consultas, índices ou escritores concorrentes — use SQLite (
sqlite-state) ou um banco de dados real. - Os registros são grandes ou binários — JSONL é para linhas estruturadas pequenas.
Exemplo concreto
Entrada do usuário:
Após cada execução, anexe novos alertas a alerts.jsonl, mas nunca o mesmo ID de alerta duas vezes.
Saída:
# Copie assets/store.py para seu projeto, depois:
from store import JsonlStore
store = JsonlStore("data/alerts.jsonl")
for alert in new_alerts:
if store.append_unique(alert, key="id"):
send(alert) # só dispara para IDs não vistos em execuções anteriores
print("tamanho do histórico:", store.count())
A leitura é feita linha por linha, de modo que um ano de histórico nunca carrega totalmente na memória, e uma linha final incompleta de uma falha é ignorada, sem quebrar a próxima execução.
Padrão a aplicar
- Um objeto JSON por linha; anexe com
ensure_ascii=Falsepara que o texto permaneça legível. - Leitura em streaming com um gerador; ignore linhas em branco/corrompidas em vez de lançar exceção.
- Deduplicação com
seen_keys(key)/append_unique(record, key)para tornar as execuções idempotentes. - Combine com um agendador para que o arquivo seja a memória durável entre invocações.
Referência: assets/store.py.
Fonte
Destilado do tratamento de estado de bots agendados pelo autor. v1.0.0. Veja também: [[sqlite-state]], [[cron-dispatch]], [[pipeline-orchestrator]].
→ Construa o bot executável completo com Trawlkit.