這與Google App Engine Memcache API特別相關,但我確定它也適用於其他Memcache工具。如果我想在內存緩存中存儲一個None值,該怎麼辦?
字典獲得()方法允許你指定一個默認值,比如dict.get(「鍵」,「defaultval」)
,如果有可能這是有用的,你可能希望存儲無作爲字典中的一個值。
但是,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轉換爲字符串並返回之外,還有更好的方法可以處理這個問題嗎?
我認爲這是最好的方法。它給你一個哨兵值,不能混淆其他任何東西。 – 2009-05-22 10:52:01
這就是我最終做的。謝謝! – jamtoday 2009-05-29 01:15:14