使用扭曲来代理属性访问'__getattribute__'的内存缓存调用



我试图从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)

给遇到这个问题的人一个提示。这种方法不会、不能、不会、永远不应该也永远不会奏效。Twisted不会向阻塞代码返回值。因此,如果您遇到这样的问题,您需要重新考虑您的方法。岩石有很多扭曲的方式,但不是这个。

相关内容

  • 没有找到相关文章

最新更新