getattributeからツイストした memcache 呼び出しをトリガーし、オブジェクトに値を返そうとしていました。これは可能ですか?私の考えでは、gatherResults は呼び出しが成功または失敗するのを待ってから結果を返します。これは実行されますが、インタープリターは、属性にアクセスしているものに deferred を返します。
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)