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