Questo è specificamente correlato all'API Memcache di Google App Engine, ma sono sicuro che si applica anche ad altri strumenti di Memcache.Cosa succede se voglio memorizzare un valore None nel memcache?
Il .get dizionario() metodo consente di specificare un valore predefinito, come ad esempio dict.get ('chiave', 'ValDefault')
Questo può essere utile se è possibile si potrebbe desiderare di memorizzare Nessuno come valore in un dizionario.
Tuttavia, memcache.get() non consente di farlo. Ho modificato il mio @memoize decoratore in modo che assomiglia a questo:
def memoize(keyformat, time=1000000):
"""Decorator to memoize functions using 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
Ora sono sicuro che ci sia un buon argomento che non dovrei memorizzare i valori Nessuno, in primo luogo, ma cerchiamo di metterlo da parte per adesso. C'è un modo migliore in cui posso gestire questo oltre alla conversione di nessun valore in stringhe e ritorno?
Penso che questo sia l'approccio migliore. Ti dà un valore sentinella che non può essere confuso per nient'altro. –
Questo è quello che ho finito per fare. Grazie! – jamtoday