我使用memchached with web.py来存储会话(因为我不希望它们因速度和可伸缩性问题而存储在磁盘上)。我正在使用here中的代码和pylibmc。
然而,它一直在破碎。我认为这可能是打破它的多线程。它绝对是memcached,因为使用磁盘存储可以很好地使用磁盘存储,但是对于自定义存储,它只是挂起。
线程是否可能成为问题?如何解决这个问题?
答案 0 :(得分:0)
通过为每个请求创建新的mc对象解决了问题。因此MemCacheStore
看起来像这样:
class MemCacheStore(web.session.Store):
...
def __contains__(self, key):
mc = memcache.Client(['127.0.0.1:11211'], debug=0)
return mc.get(key) != None
def __getitem__(self, key):
mc = memcache.Client(['127.0.0.1:11211'], debug=0)
return mc.get(key)
...