Dies ist speziell auf die Google App Engine Memcache API bezogen, aber ich bin mir sicher, dass es auch auf andere Memcache-Tools zutrifft.
Die Methode .get() des Wörterbuchs ermöglicht es Ihnen, einen Standardwert anzugeben, z. B. dict.get('Schlüssel', 'Standardwert')
Dies kann nützlich sein, wenn es möglich ist, dass Sie None als Wert in einem Wörterbuch speichern möchten.
Die memcache.get() Methode lässt Sie jedoch nicht dies tun. Ich habe meinen @memoize-Decorator so modifiziert, dass er folgendermaßen aussieht:
def memoize(keyformat, time=1000000):
"""Decorator zum Speichern von Funktionen mit dem Memcache."""
def decorator(fxn):
def wrapper(*args, **kwargs):
key = keyformat + str(args[1:]) + str(kwargs)
from google.appengine.api import memcache
data = memcache.get(key)
if Debug(): return fxn(*args, **kwargs)
if data:
if data is 'None': data = None
return data
data = fxn(*args, **kwargs)
if data is None: data = 'None'
memcache.set(key, data, time)
return data
return wrapper
return decorator
Jetzt bin ich mir sicher, dass es ein gutes Argument gibt, dass ich keine None-Werte von vornherein speichern sollte, aber lassen wir das jetzt beiseite. Gibt es einen besseren Weg, dies zu handhaben, als None-Werte in Zeichenfolgen umzuwandeln und zurück?