我试图缓存一个 Django 模型实例
class MyModel(models.Model):
...
several atributes, as well as foreign key attributes
...
from pymemcache.client import base
import pickle
obj = MyModel.objects.first()
client = base.Client(("my-cache.pnpnqe.0001.usw2.cache.amazonaws.com", 11211))
client.set("my-key", pickle.dumps(obj), 1000) # 1000 seconds
# and to access I use
obj = pickle.loads(client.get("my-key"))
它们都工作正常,但有时会执行同一行:
client.get("my-key")
产生非常非常奇怪的错误。(不同的错误,如 KeyError、OSError)像
Traceback (most recent call last):
File "/opt/python/current/app/proj/utils/Cache.py", line 93, in get_value
return Cache.client.get(key, None)
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pymemcache/client/base.py", line 481, in get
return self._fetch_cmd(b'get', [key], False).get(key, default)
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pymemcache/client/base.py", line 823, in _fetch_cmd
prefixed_keys)
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pymemcache/client/base.py", line 791, in _extract_value
key = remapped_keys[key]
KeyError: b'some-other-cache-key'
有时我会得到:
Traceback (most recent call last):
File "/opt/python/current/app/proj/utils/Cache.py", line 93, in get_value
return Cache.client.get(key, None)
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pymemcache/client/base.py", line 481, in get
return self._fetch_cmd(b'get', [key], False).get(key, default)
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pymemcache/client/base.py", line 833, in _fetch_cmd
raise MemcacheUnknownError(line[:32])
有时,我明白
回溯(最近一次调用最后一次):
File "/opt/python/current/app/proj/utils/Cache.py", line 93, in get_value
return Cache.client.get(key, None)
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pymemcache/client/base.py", line 481, in get
return self._fetch_cmd(b'get', [key], False).get(key, default)
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pymemcache/client/base.py", line 823, in _fetch_cmd
prefixed_keys)
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pymemcache/client/base.py", line 790, in _extract_value
buf, value = _readvalue(self.sock, buf, int(size))
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pymemcache/client/base.py", line 1234, in _readvalue
buf = _recv(sock, RECV_SIZE)
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pymemcache/client/base.py", line 1257, in _recv
return sock.recv(size)
OSError: [Errno 9] Bad file descriptor
我不想存储数据,是否有任何修复方法或任何其他不会产生此错误的酸洗方式。