示例#1
0
 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
示例#2
0
 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)