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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
derpcache-0.1.0-py3-none-any.whl
(19.5 kB
view details)
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fd0432f39ff32e4560ad1a91e8b791ebf0ffa870e9ee696b6c4abc9ff55c08b
|
|
| MD5 |
3f6ed2580cbc508c43d71b0c4fbc4676
|
|
| BLAKE2b-256 |
3eb0d36a5d55ebcfecb406b1c4dfd4f3edd78e827edad74e584e472d7a471881
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22559ca7d72e3458ba0e646c99baa65f8031c5af647dd94b71ccaa8ea146969f
|
|
| MD5 |
8c4c4f6b2987c71fcb9dfd98573da939
|
|
| BLAKE2b-256 |
e8b81adcf8d48c544de05ba079d2cb01bd3d1df5f9e39b53652d8ec8e2f59915
|