私は、ツイストライブラリを使用して異なるキューから消費している複数のコンシューマをセットアップしているという問題が発生しています。これはすべてうまく動作していますが、メインプログラムの実行を続行しているようではなく、電話をかけた後に私のプリントステートメントには絶対に座って待つことはありません。消費者:ツイストがブロックされています
cc = InitSetup()
AsyncConsumerSetup(DeviceFeaturesConsumer('outboundMessaging', 'messaging', 'outbound', ws, 'registeredCallback', cc, connection), cc)
reactor.run()
print "starting to receive device"
ws.client.on('newDevice', receive_device)
print "end receive device"
ここでは、メソッドInitSetup
とAsyncConsumerSetup
です:
def InitSetup():
parameters = ConnectionParameters()
cc = protocol.ClientCreator(reactor,
TwistedProtocolConnection,
parameters)
return cc
def AsyncConsumerSetup(consumer, cc):
try:
d = cc.connectTCP("127.0.0.1", 5672)
d.addCallback(lambda protocol: protocol.ready)
d.addCallback(consumer.on_connected)
d.addErrback(log.err)
except Exception as e:
print e
ツイストの私の理解では、しかし、私はprint文のAと思っているだろう、間違っている可能性がありますnd ws.client.on
が発砲したでしょう。
はい、あなたのTwistedに対する理解は間違っていますが、彼らが学ぶときは誰にでも起こります。すべてが '' reactor''ループ内で動かなければなりません。 –
このコードを原子炉に移動するにはどうしたらいいですか? – Johnathon64
基本的には、すべてのロジックが '' reactor.run() ''の前に実行されていることを確認する必要があります。ですから、 '' reactor.run() ''を最後まで動かすとうまくいくはずです。 –