Esto está específicamente relacionado con la API de Memcache de Google App Engine, pero estoy seguro de que también se aplica a otras herramientas de Memcache.¿Qué ocurre si deseo almacenar un valor Ninguno en la Memcache?
El .get diccionario() método le permite especificar un valor predeterminado, como dict.get ('llave', 'defaultval')
Esto puede ser útil si es posible, es posible que desee almacenar Ninguno como un valor en un diccionario.
Sin embargo, el memcache.get() no le permite hacer esto. He modificado mi decorador @memoize por lo que se ve así:
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
Ahora estoy seguro de que hay un buen argumento de que no debería estar almacenar valores Ninguno, en primer lugar, pero vamos a dejar eso de lado para ahora. ¿Hay una mejor manera de manejar esto además de convertir None vals a strings y viceversa?
Creo que este es el mejor enfoque. Te da un valor centinela que no se puede confundir por nada más. –
Esto es lo que terminé haciendo. ¡Gracias! – jamtoday