以下のコードは、AMPに関するTwistedのドキュメント(リンク)から抜粋したものです。コールバックがdに追加されると、自動的に「プロトコル」引数が追加され、reactor.run()が呼び出されたときにdeferredが自動的に実行されます。
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()
私のコードでは、cocos2dでpyglet-twisted(link)を使用していることを除いて、すべてがまったく同じです。そのため、reactorはアプリケーションと同時に起動するため、reactor.run()を呼び出すことはできません。
react.run()を呼び出すと、reactorがすでに実行されているというエラーが表示されます。
そうしないと、延期されたものは呼び出されないようです。
私はreactor.callLater、reactor.callWhenRunningでそれを呼び出そうとしましたが、両方とも引数が必要です。Noneの受け渡しは機能しません。
だから私の質問は、reactor.run()を呼び出さずにこれをこの遅延実行にするにはどうすればよいかということです。
ありがとう!