def wrapper(*args, **kwargs): key = self._make_cache_key(fn, args, kwargs) value = memcached.get(key) if value: value = MemorizedObject(value) value.from_cache = True else: value = fn(*args, **kwargs) memcached.set(key, value, time=self.ttl) value = MemorizedObject(value) value.cache_key = key return value
def wrapper(*args, **kwargs): key = self._make_cache_key(fn, args, kwargs) value = memcached.get(key) if value: value = MemorizedObject(value) value.from_cache = True else: # TODO: kick off a task here, instead of calculating the value. # https://github.com/mozilla/universal-search-recommendation/issues/11 value = fn(*args, **kwargs) memcached.set(key, value, time=self.ttl) if self.error_on_miss: raise CacheMissError() value = MemorizedObject(value) value.cache_key = key return value
def main(): q = request.args.get('q') if not q: abort(400) key = '_'.join([ conf.KEY_PREFIX, hashlib.md5(str(q).encode('utf-8')).hexdigest() ]) try: response = memcached.get(key) except Exception as e: if application.config['DEBUG']: return jsonify({e.__class__.__name__: e.args}), 500 return jsonify({}), 500 if not response: recommend.delay(q, key) return jsonify({}), 202 else: return jsonify(response), 200