Skip to content

docs: invalidation guidance, Memcached group invalidation, lock options, stored None, what runs on a hit - #448

Merged
allen0099 merged 5 commits into
masterfrom
claude/lucid-archimedes-4gzb2o
Oct 8, 2026
Merged

allen0099 merged 5 commits into
masterfrom
claude/lucid-archimedes-4gzb2o

Conversation

@allen0099

Copy link
Copy Markdown
Owner

Fixes #329
Fixes #391
Fixes #390
Fixes #389
Fixes #388

Summary

Five documentation gaps, one commit each, English and zh-TW in every commit:

Both sites build with zensical build --strict. Docs only, no changelog fragment.

Checklist

  • The issues above are assigned to me
  • Tests under tests/ cover the change (not applicable: docs)
  • A changelog fragment changelog.d/<issue>.<section>.md (required for any change under fastapi_cachex/) (not applicable)
  • uv run pre-commit run --all-files and uv run pytest pass

🤖 Generated with Claude Code

https://claude.ai/code/session_01UTXhK1BtwXTBDaouEcKtpW


Generated by Claude Code

claude added 5 commits October 7, 2026 11:13
Dependencies run on every request, since FastAPI resolves them before
the @cache wrapper; background tasks added by the handler run only on a
miss, while one a dependency adds runs on a hit too. CACHE_FLOW.md no
longer claims the handler "does not run at all".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UTXhK1BtwXTBDaouEcKtpW
APP_CACHE.md says so and shows the alternatives: a sentinel default,
has(), or get_or_set(), which does tell them apart.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UTXhK1BtwXTBDaouEcKtpW
…iod jobs (#390)

The example now shows blocking, timeout and poll_interval where they
live, on the constructor, and a new section explains why a lock does
not make a job run once per period and what does.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UTXhK1BtwXTBDaouEcKtpW
A generation counter per group, read with increment(key, 0) and bumped
to invalidate, makes a whole group unreachable without enumerating
keys; old entries leave through their TTL.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UTXhK1BtwXTBDaouEcKtpW
invalidate() drops the one key built from the request; other query
strings and Vary variants of the same resource keep the old data.
clear_path(path, include_params=True) drops every variant, on backends
that can enumerate keys.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UTXhK1BtwXTBDaouEcKtpW
@allen0099
allen0099 merged commit bb9dc2b into master Oct 8, 2026
13 checks passed
@allen0099
allen0099 deleted the claude/lucid-archimedes-4gzb2o branch October 8, 2026 06:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment