def get(self, bucket, identifier, deserialize_data=True): """ Get a item from cache bucket :param bucket: bucket where read the data :param identifier: key identifier of the data :param deserialize_data: Must be False ONLY when this method is called by IPC (common/cache.py) :return: the data :raise CacheMiss: if cache entry does not exist """ try: identifier = self._add_prefix(identifier) cache_entry = self._get_cache_bucket(bucket['name'])[identifier] if cache_entry['expires'] < int(time()): # Cache expired raise CacheMiss() return cache_utils.deserialize_data( cache_entry['data'] ) if deserialize_data else cache_entry['data'] except KeyError as exc: if bucket['is_persistent']: if deserialize_data: return cache_utils.deserialize_data( self._get_db(bucket['name'], identifier)) return self._get_db(bucket['name'], identifier) raise CacheMiss from exc except DBProfilesMissing as exc: # Raised by _add_prefix there is no active profile guid when add-on is installed from scratch raise CacheMiss from exc
def get(self, bucket, identifier): """Get a item from cache bucket""" call_args = { 'bucket': bucket, 'identifier': identifier } data = self._make_call('get', call_args) return deserialize_data(data)