Skip to main content

No project description provided

Project description

django-dynamodb-cache

Fast, safe, cost-effective DynamoDB cache backend for Django

Tests Coverage Package version Supported Python versions Supported django versions License

Introduce

This project is a cache backend using aws dynamodb.

This is compatible with the django official cache framework.

Did you set the boto3 permission?

Enter the django official command createcachetable and get started easily.

Why should I use this?

  • There are few management points, because dynamodb is a fully managed service.
  • Data is safely stored unlike inmemory db.
  • Because you only pay for what you use, it saves money on light projects such as side projects or back offices.
  • If you need more performance, you can easily switch to DAX.

Installation

pip install django-dynamodb-cache

Setup on Django

On Django settings.py

INSTALLED_APPS = [
    ...
    "django_dynamodb_cache"
]

CACHES = {
    "default": {
        "BACKEND": "django_dynamodb_cache.backend.DjangoCacheBackend",
        "LOCATION": "table-name",                  # (mandatory)
        "TIMEOUT": 300,                            # (optional) seconds
        "KEY_PREFIX": "django_dynamodb_cache",     # (optional)
        "VERSION": 1,                              # (optional)
        "KEY_FUNCTION": "path.to.function",        # (optional) f"{prefix}:{key}:{version}"
        "OPTIONS": {
            "aws_region_name": "us-east-1",                    # (optional)
            "aws_access_key_id": "aws_access_key_id",          # (optional)
            "aws_secret_access_key": "aws_secret_access_key",  # (optional)
            "is_on_demand": False,                 # (optional) default: True
            "read_capacity_units": 1,              # (optional)
            "write_capacity_units": 1,             # (optional)
            "encode": "django_dynamodb_cache.encode.PickleEncode"  # (optional)
        }
    }
}

Aws credentials

The same method as configuring-credentials provided in the boto3 documentation is used. https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials

Create cache table command

Run manage command to create cache table on Dynamodb before using

python manage.py createcachetable

Future improvements

In this project, the following can be improved in the future.

  • A full scan is included to achieve cache.clear(). This can lead to performance degradation when there is a lot of cached data.

How to contribute

This project is welcome to contributions!

Please submit an issue ticket before submitting a patch.

Pull requests are merged into the main branch and should always remain available.

After passing all test code, it is reviewed and merged.

Debug

Tests must be run in a sandbox environment.

To run the Dynamodb sandbox:

docker compose up --build

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

django_dynamodb_cache-0.5.2.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_dynamodb_cache-0.5.2-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file django_dynamodb_cache-0.5.2.tar.gz.

File metadata

  • Download URL: django_dynamodb_cache-0.5.2.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.8.17 Linux/5.15.0-1041-azure

File hashes

Hashes for django_dynamodb_cache-0.5.2.tar.gz
Algorithm Hash digest
SHA256 a3e43ccc8c8b69fa392d7e3c338d4d8074039e16fb05ccadcabd360286687482
MD5 dc7adc9f305d7c9f5d74af8a4df3dd60
BLAKE2b-256 c0fa5aa620079a12cb204c722b12d6ed4f30b965025af1a9d026fe627bdd5028

See more details on using hashes here.

File details

Details for the file django_dynamodb_cache-0.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_dynamodb_cache-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3fc015862124daae220daf96d9e0de00af2f20df83f01258cdba488f6c3d282c
MD5 5087cd18765b5b239542a34efa37bc79
BLAKE2b-256 167d22b4b88570181c99c492bc736033b0ea0b190e3e0a30744386343a540f3c

See more details on using hashes here.

Supported by

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