"d.addCallback(lambda protocol: protocol.ready)" 在 Pika 的 Twisted 示例中做了什么?

What does "d.addCallback(lambda protocol: protocol.ready)" do in Pika's Twisted example?

Pika's example code with Twisted 中的设置如下所示:

parameters = pika.ConnectionParameters()
cc = protocol.ClientCreator(
        reactor, twisted_connection.TwistedProtocolConnection, parameters)
d = cc.connectTCP('hostname', 5672)
d.addCallback(lambda protocol: protocol.ready)
d.addCallback(run)
reactor.run()

d.addCallback(lambda protocol: protocol.ready) 行有什么作用?读取 .ready 属性有副作用吗?还是 addCallback 使用回调的 return 值?

Return 每个回调的值都传递给 d 的回调链中的下一个回调。因此,protocol.ready 值被传递给 run(下一个回调)。

http://twistedmatrix.com/documents/current/core/howto/defer.html#multiple-callbacks