使用twisted来代理memcache调用属性访问' __ getattribute __'

时间:2015-09-23 23:11:55

标签: twisted deferred addcallback

我试图从 getattribute 触发扭曲的memcache调用并将值返回给我的对象。这可能吗 ?我的想法是gatherResults等待调用成功或失败然后返回结果 - 它执行但是解释器返回延迟到访问该属性的任何内容。

def __getattribute__(self, key):
        exempt = ['__providedBy__', '__class__', '__provides__', '__dict__', 'uid']
        if key in exempt:
            return object.__getattribute__(self, key)
        else:
            print key
            addr = IPv4Address('TCP', '127.0.0.1', 11211)
            mc_pool = MemCachePool(addr, maxClients=10)
            uid = object.__getattribute__(self, key)

            def return_res(res):
                return res

            deferred_calls = [mc_pool.get(key)]
            d = defer.gatherResults(deferred_calls, consumeErrors = True)
            d.addCallback(return_res)

1 个答案:

答案 0 :(得分:0)

对任何碰到这个问题的人来说都是一个头脑。这种方法不能,不能,不应该,永远不会,也永远不会有效。 Twisted不会向阻止代码返回值。因此,如果您遇到这样的问题,您需要重新考虑您的方法。扭曲的岩石在很多方面 - 只是不是这个。