Skip to main content

A specialized library developed by Credenti for efficient caching in Flask applications.

Project description

Ct Cache Lib

A specialized library developed by Credenti for efficient caching in Flask applications.


Features

  • Decorator-based caching for Flask endpoints and functions
  • Configurable Valkey connection pooling
  • Supports cache key templating with nested attribute access
  • Easy integration with Flask app lifecycle

Installation

pip install ct-cache-lib

Configuration

Add the following to your Flask app configuration:

app.config['CACHE'] = True              # Enable or disable caching
app.config['CACHE_EXPIRE_TIME'] = 60    # Default cache expiration time in seconds
app.config['CACHE_HOST'] = 'localhost'  # Cache host
app.config['CACHE_PORT'] = 6379         # Cache port
app.config['CACHE_USERNAME'] = 'user'   # Cache username (if required)
app.config['CACHE_PASSWORD'] = 'pass'   # Cache password (if required)
app.config['CACHE_CLIENT_NAME'] = 'my-client' # Cache client name

Usage

from flask import Flask
from ct_cache_lib import init_cache
import logging

app = Flask(__name__)
logger = logging.getLogger(__name__)

# Initialize the cache
ct_cache = init_cache(app, logger)

@app.route('/idle_time')
@ct_cache.cache(template_cache_key='idle_time_value:$idle_time', field='$idle_time')
def get_idle_time_value(idle_time: str):
    # Your function logic here
    return {'idle_time': idle_time}

Updating a Cache Entry

Update a cache entry directly:

ct_cache.update(
    cache_key='idle_time_value:123',  # Actual cache key
    field='some_field',
    value={'idle_time': 123},
    is_global=False,                  # or True if the key is global
    expire_time=120                   # optional, in seconds
)

Deleting a Cache Entry

Delete a cache entry:

ct_cache.delete(
    cache_key='idle_time_value:123',  # Actual cache key, not a template
    field='some_field',
    is_global=False                   # or True if the key is global
)

Committing and Resetting Cache

Commit cache writes after each request:

@app.after_request
def after_request(response):
    ct_cache.commit(response)
    return response

Reset cache if you need to roll back changes:

ct_cache.reset()

Cache Key Specification Examples

You can use dynamic cache keys by referencing function arguments or nested data using $.

Basic Example

@ct_cache.cache(template_cache_key='idle_time_value:$idle_time', field='$idle_time')
def get_idle_time_value(idle_time: str):
    return {'idle_time': idle_time}
  • If idle_time = 123, the cache key will be idle_time_value:123.

Nested Dictionary Example

@ct_cache.cache(template_cache_key='user_cache:$user.id', field='$user.id')
def get_user(user: dict):
    return user
  • If user = {'id': 01, 'name': 'User1'}, the cache key will be user_cache:01.

Nested Object Example

class User:
    def __init__(self, id, name):
        self.id = id
        self.name = name

@ct_cache.cache(template_cache_key='user_cache:$user.id', field='$user.id')
def get_user_obj(user: User):
    return {'id': user.id, 'name': user.name}
  • If user.id = 01, the cache key will be user_cache:01.

Deeply Nested Example

@ct_cache.cache(template_cache_key='deep_cache:$data.profile.info.id', field='$data.profile.info.id')
def get_deep(data: dict):
    return data
  • If data = {'profile': {'info': {'id': 01}}}, the cache key will be deep_cache:01.

Static Key Example

@ct_cache.cache(template_cache_key='static_key')
def get_static():
    return {'result': 1}
  • The cache key will always be static_key.

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

ct_cache_lib-0.1.0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

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

ct_cache_lib-0.1.0-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file ct_cache_lib-0.1.0.tar.gz.

File metadata

  • Download URL: ct_cache_lib-0.1.0.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.15

File hashes

Hashes for ct_cache_lib-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3e1fdb86cf74c2d7196e2dcc1a07ee9a7178370eac9d1551332a2f4a2e2c3066
MD5 3b40b39936c57280ed0960e574aae230
BLAKE2b-256 12e2104f4d5162ea509c82353604c6c52b3a70d1b4d472d45b3bc03ed4746433

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ct_cache_lib-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.15

File hashes

Hashes for ct_cache_lib-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 466d5aca287c596c22159684b211f9598c4665916d55cbe3fafa001092d27fdd
MD5 e7f8f4d3614855f87e50873132bf41e2
BLAKE2b-256 698f6b15046731feb54ff332993044a402b1b869b17f3a9a16d18a531820701a

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