트위스트 된 라이브러리를 사용하여 다른 대기열에서 소비하는 여러 소비자를 설정함으로써 문제가 발생합니다. 이것은 모두 잘 작동하지만, 주 프로그램의 실행을 계속하는 것처럼 보이지는 않습니다. 전화가 오면 오히려 그냥 앉아서 대기하고 내 인쇄 진술을 때리지 마십시오. reactor.run()
Twisted is blocking
여기 내 주요 코드는 실제로 소비자가 : 여기
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
는
트위스트의 나의 이해는 잘못 될 수있다, 그러나 나는 생각했을 것이다 이 인쇄 문 a를 nd ws.client.on
이 (가) 해고되었을 것입니다.
예 트위스트에 대한 이해가 잘못되었지만 배울 때 모든 사람에게 발생합니다. 모든 것은''reactor'' 루프 내에서 실행되어야합니다. –
이 코드를 원자로로 옮기려면 어떻게해야할까요? – Johnathon64
기본적으로 모든 logic이''reactor.run()''전에 실행되는지 확인해야합니다. 그래서''reactor.run()''을 끝까지 움직이면 잘 동작 할 것입니다. –