Skip to main content

Simple objects/methods results cacher with optional persistent cacheing.

Project description

Simple object cacher decorator. Makes cache for results of hard functions or methods. For example you have remote RESTful api with a lot of dictionaries. You may cache it:

>>> from urllib import urlopen
>>> from object_cacher import ObjectCacher
>>> @ObjectCacher(timeout=60)
... def get_api():
...     print "This real call"
...     return urlopen('https://api.github.com/').read()
...
>>> get_api()
This real call
'{"current_user_url":"https://api.github.com/user", ...'
>>> get_api()
'{"current_user_url":"https://api.github.com/user", ...'

As result you made http request only once.

For methods you may use it like this:

>>> from urllib import urlopen
>>> from object_cacher import ObjectCacher
>>> class API(object):
...     @ObjectCacher(timeout=60, ignore_self=True)
...     def get_methods(self):
...         print "Real call"
...         return urlopen('https://api.github.com/').read()
...
>>> a = API()
>>> a.get_methods()
Real call
'{"current_user_url":"https://api.github.com/user", ...'
>>> b = API()
>>> b.get_methods()
'{"current_user_url":"https://api.github.com/user", ...'

If ignore_self parameter is set, cache will be shared by all instances. Otherwise cache for instances will be split.

Also you may use persistent cache. The “ObjectPersistentCacher” class-decorator makes file-based pickle-serialized cache storage. When you want to keep cache after rerun you must determine cache id:

>>> from urllib import urlopen
>>> from object_cacher import ObjectCacher
>>> class API(object):
...     @ObjectPersistentCacher(timeout=60, ignore_self=True, oid='com.github.api.listofmethods')
...     def get_methods(self):
...         print "Real call"
...         return urlopen('https://api.github.com/').read()
...
>>> a = API()
>>> a.get_methods()
Real call
'{"current_user_url":"https://api.github.com/user", ...'
>>> b = API()
>>> b.get_methods()
'{"current_user_url":"https://api.github.com/user", ...'

That is keep cache after rerun.

You may change cache dir for ObjectPersistentCacher via changing ‘CACHE_DIR’ class-property.

>>> ObjectPersistentCacher.CACHE_DIR = '/var/tmp/my_cache'

Installation

You may install from pypi

pip install object_cacher

or manual

python setup.py install

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

object_cacher-0.1.7.tar.gz (3.3 kB view details)

Uploaded Source

File details

Details for the file object_cacher-0.1.7.tar.gz.

File metadata

File hashes

Hashes for object_cacher-0.1.7.tar.gz
Algorithm Hash digest
SHA256 f094bfc9d8ad4d3d6f32fcb3681c6db186e679c0256f3bd87e84fac847c65d09
MD5 419f5a450215211a3cddd6cf64b05194
BLAKE2b-256 fcddd8014e8a7b1d7c21bbfe08ea27f3beecb0384ea203d917593f103368e6e6

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