Skip to main content

A simple pickle-based caching utility.

Project description

derpcache

derpcache is a simple pickle-based caching utility.

It's made for people who love nuking their Jupyter kernels.

from derpcache import cache
import requests

countries = [
    'Afghanistan',
    'Albania',
    # ...
    'Zambia',
    'Zimbabwe'
]

pages = []
for country in countries:
    url = f'https://en.wikipedia.org/wiki/{country}'
    annotation = f'Wikipedia page for {country}'
    page = cache(requests.get, url, _annotation=country)
    pages.append(page)

Why should I use derpcache?

  • You want a cache that will persist between kernel restarts.
  • You want a simple functional interface—no IPython magics needed.
  • You want a reasonable amount of visibility into what's in your cache.
  • You want the ability to set expiration rules.

Expiration

>>> import time
>>> def long_running_func(*args, **kwargs):
...     time.sleep(1200)
...     print('running...')
...     return 'done'
...
>>> expires_after = 300
>>> cache(long_running_func, _expires_after=expires_after)
running...
done
>>> cache(long_running_func)
done
>>> time.sleep(expires_after)
>>> cache(long_running_func)
running...
done

Viewing cached entries

from derpcache import get_index
from pprint import pprint

pprint(get_index(), sort_dicts=False)  # or, pandas.DataFrame.from_records
{"5e39b292": {"callable": "__main__.long_running_func",
              "called_at": "2022-09-06T05:19:14.614796"},
 "b37ab1af": {"callable": "requests.api.get",
              "called_at": "2022-09-06T05:21:35.157183",
              "annotation": "Afghanistan"},
 "f0103017": {"callable": "requests.api.get",
              "called_at": "2022-09-06T05:21:35.814452",
              "annotation": "Albania"},
 "8861f226": {"callable": "requests.api.get",
              "called_at": "2022-09-06T05:21:36.084777",
              "annotation": "Zambia"},
 "19754ec0": {"callable": "requests.api.get",
              "called_at": "2022-09-06T05:21:36.341655",
              "annotation": "Zimbabwe"}}

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

derpcache-0.1.0.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

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

derpcache-0.1.0-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: derpcache-0.1.0.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for derpcache-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8fd0432f39ff32e4560ad1a91e8b791ebf0ffa870e9ee696b6c4abc9ff55c08b
MD5 3f6ed2580cbc508c43d71b0c4fbc4676
BLAKE2b-256 3eb0d36a5d55ebcfecb406b1c4dfd4f3edd78e827edad74e584e472d7a471881

See more details on using hashes here.

File details

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

File metadata

  • Download URL: derpcache-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for derpcache-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 22559ca7d72e3458ba0e646c99baa65f8031c5af647dd94b71ccaa8ea146969f
MD5 8c4c4f6b2987c71fcb9dfd98573da939
BLAKE2b-256 e8b81adcf8d48c544de05ba079d2cb01bd3d1df5f9e39b53652d8ec8e2f59915

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