Skip to main content

FastAPI Simple Cache

Project description

FastAPI Simple Cache

Tests Coverage Package version Supported Python versions

FastAPI Simple Cache will cache responses from a decorated endpoint if the response is JSON encodable or a FastAPI Response.

Quick start

from fastapi import FastAPI, Request

app = FastAPI()

# Initialize in startup event
from fastapi_simple_cache import FastAPISimpleCache
from fastapi_simple_cache.backends.inmemory import InMemoryBackend
@app.on_event("startup")
async def startup():
    backend = InMemoryBackend()
    FastAPISimpleCache.init(backend=backend)
    pass

# Use the @cache decorator
from fastapi_simple_cache.decorator import cache
@app.get("/")
@cache(expire=3600)  # Set expiration in seconds
def root(request: Request):  # Add a Request typed parameter
    return {"datetime": datetime.utcnow()}

Installation

The installation depends on the backend.

  • In memory: pip install fastapi-simple-cache
  • Redis: pip install "fastapi-simple-cache[redis]"
  • Firestore: pip install "fastapi-simple-cache[firestore]"

Backends

In memory

The InMemoryBackend class implements an in-memory backend.

from fastapi_simple_cache.backends.inmemory import InMemoryBackend

backend = InMemoryBackend()

Redis

The RedisBackend class implements a Redis backend.

from redis.asyncio import ConnectionPool, client

pool = ConnectionPool.from_url(url="redis://localhost:6379")
backend = RedisBackend(redis=client.Redis(connection_pool=pool))

Firestore

The FirestoreBackend class implements a Google Firestore backend.

cred = credentials.ApplicationDefault()
firebase_admin.initialize_app(cred, {"projectId": "gcp_project"})
db = firestore.client()
collection = db.collection("cache_collection")
backend = FirestoreBackend(collection=collection)

Features

Namespaces

You can add the parameter namespace on cache initialization with FastAPISimpleCache.init to modify the storage keys. Use this feature if you need to share same cache environment with other applications but with different keys.

@app.on_event("startup")
async def startup():
    FastAPISimpleCache.init(
        backend=backend,
        namespace="my-app"
    )
    pass

Valid status codes

Set valid status codes to cache responses in the @cache parameter status_codes (defaults to [200]).

@app.get("/")
@cache(expire=3600, status_codes=[200, 201])
def root(request: Request):
    return {"datetime": datetime.utcnow()}

License

FastAPI Fire Cache is released under the GNU General Public License v3.0 or later, see here for a description of this license, or see the LICENSE file for the full text.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi-simple-cache-0.1.0.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

fastapi_simple_cache-0.1.0-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file fastapi-simple-cache-0.1.0.tar.gz.

File metadata

  • Download URL: fastapi-simple-cache-0.1.0.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.1

File hashes

Hashes for fastapi-simple-cache-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1136532ded49987bf6323ce183ef1014c272db7cf8acd497d4b9a82ac1026019
MD5 dc92ea9a09f6fcc2588b92290781a854
BLAKE2b-256 267eeacd9150963ea8320e77dcfde4ca0484a8bd114462c3ea129869e83d6f8d

See more details on using hashes here.

File details

Details for the file fastapi_simple_cache-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_simple_cache-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b400509f55a05b2511ef687d1cbec9126e0068fd080e7793cfb534909f45f438
MD5 e86cf8febb345dd39e92ca2c193afcdd
BLAKE2b-256 f82181c0bf79b5f8b79384459715f6b1cda8cf39cecfe04a661a6e068a3c2b90

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page