def get_cached_multiple_link_load(items, time_interval):
"""Cached version of get_multiple_link_load()"""
item_map = {k: _cache_key(k, time_interval) for k in iterkeys(items)}
# cache lookup
cached = cache.get_many(item_map.values())
_logger.debug(
"get_cached_multiple_link_load: got %d/%d values from cache (%r)",
len(cached), len(items), time_interval)
# retrieve data for cache misses
misses = {k: v
for k, v in iteritems(items) if item_map[k] not in cached}
if misses:
get_multiple_link_load(misses, time_interval)
# set data from cache
reverse_item_map = {v: k for k, v in iteritems(item_map)}
for cache_key, value in iteritems(cached):
key = reverse_item_map[cache_key]
properties = items[key]
properties['load_in'], properties['load_out'] = value
# add new data to cache
missed_data = {item_map[key]: (properties['load_in'],
properties['load_out'])
for key, properties in iteritems(misses)}
_logger.debug("get_cached_multiple_link_load: caching %d values",
len(missed_data))
cache.set_many(missed_data, CACHE_TIMEOUT)
评论列表
文章目录