Ejemplo n.º 1
0
        def decorator(fn):
            fn_generate_key = function_key_generator('cache_on_arguments:v1',
                                                     fn,
                                                     to_str=unicode)
            fn_args = inspect.getargspec(fn)
            fn_has_self = fn_args[0] and fn_args[0][0] in ('self', 'cls')

            @functools.wraps(fn)
            def wrapper(*args, **kwargs):
                key = fn_generate_key(*args, **kwargs)
                val = redis_client.get(key)
                if val is None:
                    val = fn(*args, **kwargs)
                    redis_client.set(key, zdumps(val), expiration_time)
                    return val
                else:
                    return zloads(val)

            def generate_key(*args, **kwargs):
                args = ((None, ) + args) if fn_has_self else args
                return fn_generate_key(*args, **kwargs)

            def flush(*args, **kwargs):
                return redis_client.delete(generate_key(*args, **kwargs))

            wrapper.generate_key = generate_key
            wrapper.flush = flush
            wrapper.original = fn

            return wrapper
Ejemplo n.º 2
0
def function_key_generator(namespace, fn, to_str=key_generate_to_str):
    # NOTE(morganfainberg): This wraps dogpile.cache's default
    # function_key_generator to change the default to_str mechanism.
    return util.function_key_generator(namespace, fn, to_str=to_str)
Ejemplo n.º 3
0
def function_key_generator(namespace, fn, to_str=_key_generate_to_str):
    # NOTE(morganfainberg): This wraps dogpile.cache's default
    # function_key_generator to change the default to_str mechanism.
    return util.function_key_generator(namespace, fn, to_str=to_str)
Ejemplo n.º 4
0
 def decorate(fn):
     canary.append(util.function_key_generator(namespace, fn, **kw))
     return fn
Ejemplo n.º 5
0
 def decorate(fn):
     canary.append(util.function_key_generator(namespace, fn, **kw))
     return fn
Ejemplo n.º 6
0
def to_native_str_key_generator(namespace, fn, to_str=_to_native_str):
    return function_key_generator(namespace, fn, to_str)
Ejemplo n.º 7
0
Archivo: cache.py Proyecto: cmbi/hommod
 def _get_key(self, f, args, kwargs):
     key = function_key_generator(None, f)(*args, **kwargs)
     return key
Ejemplo n.º 8
0
 def _get_key(self, f, args, kwargs):
     key = function_key_generator(None, f)(*args, **kwargs)
     return key