v0.7.4 — SQLite invalidation backend
SQLite invalidation backend
Adds SqliteInvalidationBackend — a second concrete InvalidationBackend alongside Redis — that fans out load()-cache invalidation across worker processes on a single host using a shared SQLite file, with zero external infrastructure (sqlite3 is stdlib).
Highlights
pyjinhx.integrations.sqlite.SqliteInvalidationBackend— shared-file event log with a background poll loop, retention-based pruning, per-worker cursor seeding (no history replay), self-event skip,channelisolation, WAL +busy_timeout, astart()readiness handshake, and surfaced logging on connect failure.- Auto-wiring from
PJX_INVALIDATION_DB. If bothREDIS_URLandPJX_INVALIDATION_DBare set, Redis wins. - Docs: new
docs/api/integrations-sqlite.mdandPJX_INVALIDATION_DBin thefrom_envenv-var table.
Scope
Single-host only (SQLite locking is unreliable over network filesystems — use Redis for multi-host); :memory: unsupported (private per-process DB → no fan-out). The curated public API is unchanged — reachable only via pyjinhx.integrations.sqlite.
Full changelog: v0.7.3...v0.7.4