Skip to main content

Caching functions and coroutines result with decorators

Project description

cachefunc

Caching functions and coroutines result with decorators

Usage

Basic usage with default dict cache:

import aiohttp
import asyncio
import requests
from cachefunc import cachefunc, cachecoro

@cachefunc()
def your_func(url):
    response = requests.get(url)
    return response.text

@cachecoro()
async def your_async_func(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            html = await response.text()
            return html

There are two available caches - dict and redis:

from cachefunc import cachefunc, DictCache, RedisCache

dict_cache = DictCache()
redis_cache = RedisCache()

@cachefunc(dict_cache)
def your_func_cached_in_dict(url):
    response = requests.get(url)
    return response.text 

@cachefunc(redis_cache)
def your_func_cached_in_redis(url):
    response = requests.get(url)
    return response.text

For DictCache it is possible to setup distinct timeout for each function:

from datetime import timedelta

@cachefunc(dict_cache, timeout=timedelta(hours=2))
def your_func_cached_for_two_hours(url):
    response = requests.get(url)
    return response.text

@cachefunc(dict_cache, timeout=timedelta(minutes=10))
def your_ohter_func_cached_for_ten_minutes(connection, query):
    cursor = connection.execute(query)
    return cursor.fetchall() 

Also custom cache can be created from BaseCache, you should implement methods _get() and _set():

from cachefunc import BaseCache

class CustomCache(BaseCache):
    def _get(self, key: int) -> Any: ...
    def _set(self, key: int, result: Any, **kwargs) -> None: ...

License

MIT

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

cachefunc-0.2.6.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

cachefunc-0.2.6-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file cachefunc-0.2.6.tar.gz.

File metadata

  • Download URL: cachefunc-0.2.6.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.3 Darwin/22.4.0

File hashes

Hashes for cachefunc-0.2.6.tar.gz
Algorithm Hash digest
SHA256 4977384a8c3a05d2458eab3af404b72611363a0c597016f8374eccca89e4063e
MD5 2f043eaf881f16e9c8c28aaf991bd7f3
BLAKE2b-256 c1d086e40b9d94a2f3530b80fedba6b3a79b0d70704f4691e3d6521f4bef31b3

See more details on using hashes here.

File details

Details for the file cachefunc-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: cachefunc-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 4.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.3 Darwin/22.4.0

File hashes

Hashes for cachefunc-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 c359bea716dad21acf7d9af0c68d57fb562b3f69d2119891c9983b4d507621f4
MD5 f07b1c664bb4f847b92e74e5d4faac3b
BLAKE2b-256 2b13a2535d098803b393e4627b4c2d8dc981f127e5f9e7972e80d0effc2ac7d7

See more details on using hashes here.

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