Cela seul peut mettre en cache la valeur de retour dans Memcached
@cached(time=1200)
def functionToCache(arguments):
return arguments
Surtout, je trouve cela pratique lors du développement avec du scraping ou des données externes.
pip install python-memcached
memcached-decorater.py
def decorator_with_args(decorator_to_enhance):
"""
Une fonction qui donne un argument à un décorateur et le renvoie
"""
def decorator_maker(*args, **kwargs) :
def decorator_wrapper(func) :
return decorator_to_enhance(func, *args, **kwargs)
return decorator_wrapper
return decorator_maker
@decorator_with_args
def cached(func, *args, **kwargs):
"""
Décorateur qui met en cache le résultat en utilisant le nom et l'argument de la fonction comme clés
Comment utiliser
@cached(time=1200)
def functionToCache(arguments):
"""
def wrapper(*pars):
key = func.__name__ + '_' + '_'.join([str(par) for par in pars])
print key
client = memcache.Client(['127.0.0.1:11211'])
val = client.get(key)
if not val:
val = func(*pars)
try:
client.set(key, val, time=kwargs['time'])
except:
pass #S'il vous plaît
return val
return wrapper
gae-memcache-decorator.py https://gist.github.com/abahgat/1395810
Recommended Posts