非常奇怪的行为:Django的cache.get方法返回不同的值

时间:2012-10-11 02:00:30

标签: python django caching memcached couchbase

我正在使用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。

0 个答案:

没有答案