Package gluon :: Module cache :: Class CacheAbstract
[hide private]
[frames] | no frames]

Class CacheAbstract

source code

object --+
         |
        CacheAbstract
Known Subclasses:


Abstract class for cache implementations.
Main function just provides referenced api documentation.

Use CacheInRam or CacheOnDisk instead which are derived from this class.

Note:
    Michele says: there are signatures inside gdbm files that are used 
    directly by the python gdbm adapter that often are lagging behind in the
    detection code in python part.
    On every occasion that a gdbm store is probed by the python adapter,
    the probe fails, because gdbm file version is newer.
    Using gdbm directly from C would work, because there is backward
    compatibility, but not from python!
    The .shelve file is discarded and a new one created (with new
    signature) and it works until it is probed again...
    The possible consequences are memory leaks and broken sessions.

Instance Methods [hide private]
 
__call__(self, key, f, time_expire=300)
Tries to retrieve the value corresponding to `key` from the cache if the object exists and if it did not expire, else it calls the function `f` and stores the output in the cache corresponding to `key`.
source code
 
__init__(self, request=None)
Initializes the object
source code
 
_clear(self, storage, regex)
Auxiliary function called by `clear` to search and clear cache entries
source code
 
clear(self, regex=None)
Clears the cache of all keys that match the provided regular expression.
source code
 
increment(self, key, value=1)
Increments the cached value for the given key by the amount in value
source code

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Class Variables [hide private]
  cache_stats_name = 'web2py_cache_statistics'
Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__call__(self, key, f, time_expire=300)
(Call operator)

source code 

Tries to retrieve the value corresponding to `key` from the cache if the
object exists and if it did not expire, else it calls the function `f`
and stores the output in the cache corresponding to `key`. It always
returns the function that is returned.

Args:
    key(str): the key of the object to be stored or retrieved
    f(function): the function whose output is to be cached.

        If `f` is `None` the cache is cleared.
    time_expire(int): expiration of the cache in seconds.

        It's used to compare the current time with the time
        when the requested object was last saved in cache. It does not
        affect future requests. Setting `time_expire` to 0 or negative
        value forces the cache to refresh.

__init__(self, request=None)
(Constructor)

source code 
Initializes the object

Args:
    request: the global request object

Overrides: object.__init__

clear(self, regex=None)

source code 

Clears the cache of all keys that match the provided regular expression.
If no regular expression is provided, it clears all entries in cache.

Args:
    regex: if provided, only keys matching the regex will be cleared,
        otherwise all keys are cleared.

increment(self, key, value=1)

source code 

Increments the cached value for the given key by the amount in value

Args:
    key(str): key for the cached object to be incremeneted
    value(int): amount of the increment (defaults to 1, can be negative)