Skip to content

feat(core): add AsyncCacheableSource and cacheable-source wiring#938

Draft
chrisburr wants to merge 2 commits into
DIRACGrid:mainfrom
chrisburr:rss-3-cacheable-source
Draft

feat(core): add AsyncCacheableSource and cacheable-source wiring#938
chrisburr wants to merge 2 commits into
DIRACGrid:mainfrom
chrisburr:rss-3-cacheable-source

Conversation

@chrisburr

@chrisburr chrisburr commented Jun 11, 2026

Copy link
Copy Markdown
Member

Adds a generic diracx.core.sources module with AsyncCacheableSource and
Snapshot, a diracx.cacheable_sources entry-point group, and application
factory support: each source is instantiated once per app (so its caches
persist across requests) with the database instance matching its
db_class, and its read method overrides the create dependency for every
implementation class so extensions can substitute their own sources.
Routers depending on a source whose database is not available fail at
startup, consistent with the handling of missing databases.

Replaces #910
Part of #839

Blocked by #936

chrisburr and others added 2 commits June 11, 2026 09:51
Async equivalent of TwoLevelCache for use with coroutine populate
functions: same soft/hard TTL semantics, but coordinated with asyncio
primitives instead of a ThreadPoolExecutor.

Co-authored-by: Loxeris <30194187+Loxeris@users.noreply.github.com>
Adds a generic diracx.core.sources module with AsyncCacheableSource and
Snapshot, a diracx.cacheable_sources entry-point group, and application
factory support: each source is instantiated once per app (so its caches
persist across requests) with the database instance matching its
db_class, and its read method overrides the create dependency for every
implementation class so extensions can substitute their own sources.
Routers depending on a source whose database is not available fail at
startup, consistent with the handling of missing databases.

Co-authored-by: Loxeris <30194187+Loxeris@users.noreply.github.com>
@read-the-docs-community

Copy link
Copy Markdown

@chrisburr chrisburr linked an issue Jun 11, 2026 that may be closed by this pull request
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ResourceStatusSource + route

1 participant