Cache Implementation Extension for FastAPI Asynchronous Web Framework
Project description
FastAPI Cachette
Features
Cache Extension for FastAPI Asynchronous Web Framework Most of the Backend implementation is directly lifted from fastapi-cache by @long2ice excluding the MongoDB backend option.
Upcoming Features (To-Do List)
-
Implement
flush
andflush_expired
methods on individual backends (Not needed for Redis & Memcached backends) -
Implement options for encoding/decoding cache data using built-in protocols such as pickle, json or third-party protocol such as msgpack, parquet, feather, hdf5
-
Write more examples
Installation
The easiest way to start working with this extension with pip
pip install fastapi-cachette
# or
poetry add fastapi-cachette
Getting Started
This FastAPI extension utilizes "Dependency Injection" (To be continued)
Configuration of this FastAPI extension must be done at startup using "@Cachette.load_config" decorator (To be continued)
These are all available options with explanations and validation requirements (To be continued)
Examples
The following examples show you how to integrate this extension to a FastAPI App (To be continued)
See "examples/" folders
To run examples, first you must install extra dependencies
Do all in one go with this command...
pip install aiobotocore aiomcache motor uvicorn redis
# or
poetry install --extras examples
Do individual example with this command...
pip install redis
# or
poetry install --extras redis
# or
poetry install --extras `<example-name>`
Contributions
See features and write tests I guess.
Test Environment Setup
This project utilizes multiple external backend services namely AWS DynamoDB, Memcached, MongoDB and Redis as backend service options as well as a possible internal option called InMemoryBackend. In order to test viability, we must have specific instances of these set up in the background of our testing environment
With Docker-Compose
Utilize orchestration file attached to reposity and docker-compose
command to set up testing
instances of backend services using the following command...
docker-compose up -d
When you are finished, you can stop and remove background running backend instances with the following command...
docker-compose down
Without Docker-Compose
If you are using arm64
architecture on your local machine like I am with my fancy MacBook Pro,
there is a chance that your docker-compose
(V1) is not properly configured and have caused you
many headaches. The following commands will allow you to replicate docker-compose orchestration
command given above.
-
AWS DynamoDB Local
docker run --detach --rm -ti -p 8000:8000 --name cachette-dynamodb amazon/dynamodb-local:latest
-
Memcached
docker run --detach --rm -ti -p 11211:11211 --name cachette-memcached memcached:bullseye
-
MongoDB
docker run --detach --rm -ti -p 27017:27017 --name cachette-mongodb mongo:latest
-
Redis
docker run --detach --rm -ti -p 6379:6379 --name cachette-redis redis:bullseye
And finally, to stop and remove running instances, run the following command
[ -n $(docker ps -f name="cachette-*" -q) ] && docker kill $(docker ps -f name="cachette-*" -q)
Tests
Now that you have background running backend instances, you can proceed with the tests by using
pytest
command as such...
pytest
Or you can configure the command to run specific tests as such...
pytest -k test_load_invalid_configs
# or
pytest -k test_set_then_clear
All test suites must be placed under tests/
folder or its subfolders.
License
This project is licensed under the terms of the MIT license.
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-cachette-0.1.2.tar.gz
.
File metadata
- Download URL: fastapi-cachette-0.1.2.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.8.12 Darwin/20.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59db89698d990a1a3c1bc8767984b9cd9319eba2262cc8e0c1de5cb141570df9 |
|
MD5 | 630e230f30a0512597ef6cbbd608b2f4 |
|
BLAKE2b-256 | 0d538415ab3a05a1293a8d7e4960a567a181bcc8cf9a18c663d95f976220bff6 |
File details
Details for the file fastapi_cachette-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: fastapi_cachette-0.1.2-py3-none-any.whl
- Upload date:
- Size: 18.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.8.12 Darwin/20.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2edcf2ab4f489e2032136cc5fb7c3773fcc82c6a3944315dc43fc9a5a158e533 |
|
MD5 | b193a8e30f8a34b8651690869d07104b |
|
BLAKE2b-256 | 7855f5fd9142a136f586656e672187ed7af3e0eb194dd9dce150016488d97e8a |