Dies allein kann den Rückgabewert in memcached zwischenspeichern
@cached(time=1200)
def functionToCache(arguments):
return arguments
Besonders finde ich es praktisch, wenn ich mit Scraping oder externen Daten entwickle.
memcached-decorater.py
def decorator_with_args(decorator_to_enhance):
"""
Eine Funktion, die einem Dekorateur ein Argument gibt und es zurückgibt
"""
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):
"""
Decorator, der das Ergebnis unter Verwendung des Funktionsnamens und des Arguments als Schlüssel zwischenspeichert
Wie benutzt man
@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 #Bitte
return val
return wrapper
gae-memcache-decorator.py https://gist.github.com/abahgat/1395810
Recommended Posts