使用web.py和memcached进行线程化

时间:2014-05-17 13:22:33

标签: python multithreading memcached web.py

我使用memchached with web.py来存储会话(因为我不希望它们因速度和可伸缩性问题而存储在磁盘上)。我正在使用here中的代码和pylibmc。

然而,它一直在破碎。我认为这可能是打破它的多线程。它绝对是memcached,因为使用磁盘存储可以很好地使用磁盘存储,但是对于自定义存储,它只是挂起。

线程是否可能成为问题?如何解决这个问题?

1 个答案:

答案 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)
               ...