Python 2.7 Memcached引发了一个奇怪的密钥错误

Python 2.7 Memcached引发了一个奇怪的密钥错误,python-2.7,caching,memcached,Python 2.7,Caching,Memcached,免责声明:我是memcached的新手,所以这可能(可能)是我的一个愚蠢错误。在我的实习中,我使用的是pymemcache 1.2.9。我从一个以前的实习生那里继承了一个项目,我很难与他联系,而且我的同事中没有人知道这个项目 密钥以一种相当简单的方式添加到本地托管的缓存中——密钥是一个字符串,数据是一个来自我们正在使用的google API(geopy)的字符串。但是,当我尝试查看缓存中是否存在密钥时: if not cache.get(key): #python st

免责声明:我是memcached的新手,所以这可能(可能)是我的一个愚蠢错误。在我的实习中,我使用的是pymemcache 1.2.9。我从一个以前的实习生那里继承了一个项目,我很难与他联系,而且我的同事中没有人知道这个项目

密钥以一种相当简单的方式添加到本地托管的缓存中——密钥是一个字符串,数据是一个来自我们正在使用的google API(geopy)的字符串。但是,当我尝试查看缓存中是否存在密钥时:

    if not cache.get(key):
         #python stuff
         cache.add(key, values)
这在大约一半的时间内有效,其余时间我会出现以下错误:

    Exception in thread Thread-1:
     Traceback (most recent call last):
      File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
       File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
   File "card_visualization.py", line 69, in fetcher_thread
if not cache.get(key):
   File "/home/arnold/.virtualenvs/datavis/local/lib/python2.7/site-packages/pymemcache/client.py", line 458, in get
return self._fetch_cmd(b'get', [key], False).get(key, None)
  File "/home/arnold/.virtualenvs/datavis/local/lib/python2.7/site-packages/pymemcache/client.py", line 723, in _fetch_cmd
key = checked_keys[key]
 KeyError: 'my_acceptable_key'

令人困惑的是,不同的键会导致此错误,并且它的发生完全没有规律性。

EDIT:修复了此问题。我在python中运行多线程——一个线程将把某个东西放到缓存中,另一个线程将检查该东西是否在缓存中。这个故事的寓意是:不要使用多线程和memcached,除非您确定它们是如何工作的。