FastAPI Simple Cache
Project description
FastAPI Simple Cache
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1136532ded49987bf6323ce183ef1014c272db7cf8acd497d4b9a82ac1026019 |
|
MD5 | dc92ea9a09f6fcc2588b92290781a854 |
|
BLAKE2b-256 | 267eeacd9150963ea8320e77dcfde4ca0484a8bd114462c3ea129869e83d6f8d |
File details
Details for the file fastapi_simple_cache-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: fastapi_simple_cache-0.1.0-py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.28.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b400509f55a05b2511ef687d1cbec9126e0068fd080e7793cfb534909f45f438 |
|
MD5 | e86cf8febb345dd39e92ca2c193afcdd |
|
BLAKE2b-256 | f82181c0bf79b5f8b79384459715f6b1cda8cf39cecfe04a661a6e068a3c2b90 |