これは特にGoogle App Engine Memcache APIに関連していますが、他のMemcacheツールにも当てはまります。MemcacheにNone値を保存する場合はどうすればよいですか?
辞書に.get()メソッドは、あなたが(「defaultval」「キー」、)などdict.getとして、デフォルト値を指定することができます
それが可能だあなたはどれを保存しないようにしたいかもしれない場合、これは便利です辞書の値として。
ただし、memcache.get()ではこれを行うことはできません。それは次のようになりますので、私は私の@memoizeデコレータを変更した:
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
今、私は私が最初の場所でなし値を格納すべきではない良いの引数があります確信している、しかし、のは、のために脇にそれを入れてみましょう今。 None valsを文字列に変換するだけでなく、これを処理するより良い方法はありますか?
これは最善のアプローチだと思います。それはあなたに何か他のもののために混乱させることができないセンチネルの価値を与えます。 –
これは私がやったことです。ありがとう! – jamtoday