Skip to main content

fast-resource is a data transformation layer that sits between the database and the application's users, enabling quick data retrieval. It further enhances performance by caching data using Redis and Memcached.

Project description

fast-resource

fast-resource is a data transformation layer that sits between the database and the application's users, enabling quick data retrieval. It further enhances performance by caching data using Redis and Memcached.

Why Use fast-resource?

fast-resource is useful in situations where there are numerous data retrieval queries, multiple data sources requiring data aggregation, and shared data between entities that need to be cached. Additionally, the type of database used is not important.

Requirements

  • redis
  • pymemcache

Install

> pip install fast-resource

Usage

Quick Start

from fast_resource import Resource


class UserResource(Resource):
    class Meta:
        fields = (
            'id',
            'name',
        )

    def name(self, input_data) -> str:
        return f'{input_data["name"]} {input_data["family"]}'


UserResource({'id': 1, 'name': 'bagher', 'family': 'rokni'}).to_dict()

Custom output

UserResource({'id': 1, 'name': 'bagher', 'family': 'rokni'}).to_dict(('id',))

Use cache decoder

from redis.client import Redis
from fast_resource import Resource, cache
from fast_resource.cache import RedisCache

def my_key_builder(input_data, field):
    return f'user.{input_data["id"]}.{field}'

class UserResource(Resource):
    class Meta:
        fields = (
            'id',
            'name',
        )

    @cache(key=my_key_builder)
    def name(self, input_data) -> str:
        return f'{input_data["name"]} {input_data["family"]}'


Resource.cache_init(driver=RedisCache(Redis()))
UserResource({'id': 1, 'name': 'bagher', 'family': 'rokni'}).to_dict()

Custom cache expire_time

@cache(key=my_key_builder, expire_time=60)
def name(self, input_data) -> str:
    return f'{input_data["name"]} {input_data["family"]}'

Cache delete

UserResource({'id': 1, 'name': 'bagher', 'family': 'rokni'}).cache_delete()

Cache delete & rebuild

UserResource({'id': 1, 'name': 'bagher', 'family': 'rokni'}).cache_delete(rebuild=True)

Cache delete by keys

UserResource.cache_delete_by_keys(['user.1.name'])

Create collection

user_collection = UserResource.collection([
    {'id': 1, 'name': 'bagher', 'family': 'rokni'},
    {'id': 2, 'name': 'sepehr', 'family': 'rokni'},
    {'id': 3, 'name': 'sama', 'family': 'rokni'},
])
user_collection.to_dict()

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

fast-resource-0.1.1.tar.gz (10.1 kB view hashes)

Uploaded Source

Built Distribution

fast_resource-0.1.1-py3-none-any.whl (11.4 kB view hashes)

Uploaded Python 3

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