Skip to main content

FastAPI-Cache X

uv Ruff Tests Coverage Status

Downloads Weekly downloads Monthly downloads

PyPI version Python Versions

English | 繁體中文

A high-performance caching extension for FastAPI: a server-side response cache with Cache-Control and ETag support, and application-level caching.

Documentation: https://fastapi-cachex.readthedocs.io/en/latest/ — guides and the full API reference.

Features

  • HTTP caching — a @cache decorator for GET routes with Cache-Control, ETag / If-None-Match (304) and per-route invalidation.
  • Application cache — CacheManager for caching arbitrary JSON values in your own code, with compute-on-miss get_or_set() and atomic store-if-absent add(), and @cached for a plain function, keyed on its arguments.
  • Backends — in-memory, Redis and Memcached, with atomic counters, one-shot values and locks.

Installation

uv add fastapi-cachex

Everything in the core package works with the in-memory backend. The other backends ship as extras:

Extra Install Pulls in Needed for
redis uv add "fastapi-cachex[redis]" redis[hiredis], orjson AsyncRedisCacheBackend
memcached uv add "fastapi-cachex[memcached]" pymemcache MemcachedBackend

Extras combine: uv add "fastapi-cachex[redis,memcached]".

Quick Start

from fastapi import FastAPI

from fastapi_cachex import AppCache, BackendProxy, cache
from fastapi_cachex.backends import MemoryBackend

app = FastAPI()
BackendProxy.set(MemoryBackend())  # or AsyncRedisCacheBackend / MemcachedBackend


@app.get("/items/{item_id}")
@cache(ttl=60)  # served from the cache for 60 seconds, with ETag revalidation
async def read_item(item_id: int):
    return {"item_id": item_id}


def build_report() -> dict:
    return {"total": 42}  # stands in for something slow


@app.get("/report")
async def report(cache: AppCache):
    # Cache any JSON value in your own code. Concurrent misses run
    # build_report once: get_or_set() locks by default.
    return await cache.get_or_set("report", build_report, ttl=300)

Documentation

The guides are built from docs/ into the site linked below. Read them there: a code block that includes one of the runnable examples renders on the site, while GitHub shows only its --8<-- include line (the sentence before each block links the example file).

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Metadata

Release files for fastapi-cachex 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastapi-cachex 0.5.1
File Size Uploaded
fastapi_cachex-0.5.1.tar.gz 86.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fastapi-cachex 0.5.1
File Interpreter ABI Platform
fastapi_cachex-0.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 184.1 kB

Release files / fastapi_cachex-0.5.1.tar.gz

Download URL fastapi_cachex-0.5.1.tar.gz
Size 86.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c44ca5f95a02e6a266f7fd16ca26a96677ee377e0a0db021dd7d5169741acbaa
BLAKE2b-256 checksum
How to use checksums
d244419f4f6547891608a7aac85f036d5d43ec33d8bcda2f2e3b6cd3d2ebfbe9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release files / fastapi_cachex-0.5.1-py3-none-any.whl

Download URL fastapi_cachex-0.5.1-py3-none-any.whl
Size 97.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
500c13116ab5375335ef1bdea422abbbb71e5a7514548b77751ccc7dd0987ea3
BLAKE2b-256 checksum
How to use checksums
2e7a15229a7160346ae5d8f3007efb0f38d5ea762b89708a06e3062e94568a0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page