下面的代码取自 Twisted 关于 AMP 的文档(链接)。当回调被添加到 d 时,会自动添加一个“协议”参数,并且在调用 reactor.run() 时会自动运行延迟。
def connect():
endpoint = TCP4ClientEndpoint(reactor, "127.0.0.1", 8750)
factory = Factory()
factory.protocol = AMP
return endpoint.connect(factory)
d = connect()
def connected(protocol):
return protocol.callRemote(
RegisterUser,
username=u'alice'
d.addCallback(connected)
reactor.run()
在我的代码中,一切都完全相同,除了我一直在使用 pyglet-twisted ( link ) 和 cocos2d,所以我不能调用 reactor.run() 因为反应器与应用程序同时启动。
如果我调用 reactor.run(),我会收到一条错误消息,指出反应器已经在运行。
如果我不这样做,deferred 似乎不会被调用。
我一直在尝试用 reactor.callLater、reactor.callWhenRunning 来调用它,但两者都需要一个参数。传递 None 不起作用。
所以我的问题是,我应该如何在不调用 reactor.run() 的情况下使其延迟运行。
谢谢!