Skip to content

v0.7.4 — SQLite invalidation backend

Choose a tag to compare

@paulomtts paulomtts released this 10 Jun 01:03
· 193 commits to master since this release

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, channel isolation, WAL + busy_timeout, a start() readiness handshake, and surfaced logging on connect failure.
  • Auto-wiring from PJX_INVALIDATION_DB. If both REDIS_URL and PJX_INVALIDATION_DB are set, Redis wins.
  • Docs: new docs/api/integrations-sqlite.md and PJX_INVALIDATION_DB in the from_env env-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