我正在使用django的缓存后端与遵循memcached协议的moxi-client进行交互。
我的测试代码是这样构建的。
from django.core.cache import cache
key = "test_object_key"
max_errors = 15
errors = 0
total_runs = 0
unexpected_objects_returned = []
while(errors<max_errors):
total_runs += 1
obj = cache.get(key)
if(type(obj) == ExpectedObject):
continue
else:
unexpected_objects_returned.append(obj)
errors += 1
第一次返回正确的值。对于接下来的10次调用,该方法以相同的顺序返回完全相同的对象。对象是字符列表(通过不同键下的另一个进程存储)或None。在前10次点击之后,该方法开始返回正确的对象。
如果我使用以下代码实例化缓存对象
from django.core.cache import get_cache
cache = get_cache('default')
一切都按预期运行。正因为如此,我期待这个问题出现在Django的某个地方,而不是moxi-client或couchbase的下游。
我会实现这个解决方案但是我有一个巨大的Django项目,并确保每个文件包含它将是一个痛苦。任何有关解决方案的提示都将不胜感激。
我正在使用Django 1.3。