擅长:python、mysql、java
<p>这是因为django LocMemCache默认使用cPickle而不是pickle。在LocMemCache类中可以看到:</p>
<pre><code>try:
from django.utils.six.moves import cPickle as pickle
except ImportError:
import pickle
</code></pre>
<p>如果要在shell中执行以下操作:</p>
^{pr2}$
<p>同样的错误。在</p>
<p>作为可能的解决方案,我建议您在测试中使用pickle手动打包对象,然后再打包缓存.set():</p>
<pre><code>a = TestObj()
pickled = pickle.dumps(a, pickle.HIGHEST_PROTOCOL)
cache.set('content', pickled)
</code></pre>