0

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)
4

1 に答える 1

0

これに出くわした人への頭だけ。このアプローチは、機能しない、できない、機能しない、機能しない、機能しない。Twisted はブロッキング コードに値を返しません。したがって、このような問題に遭遇した場合は、アプローチを再考する必要があります。非常に多くの点でねじれた岩 - これだけではありません。

于 2015-09-26T17:04:07.507 に答える