rrbroker.py と reworker.py の間でメッセージを送信するために pyzmq を使用しています。何らかの理由で私は得ています
worker:
Users/eric/Documents/Programming/JavaScript/NodeJS/urchin/urchin_worker.py in <module>()
111 while True:
112 try:
--> 113 message = socket.recv()
114 message = json.loads(message)#decode into JSON
115 print message
Exception TypeError: "'NoneType' object is not callable" in <zmq.core.socket.Socket object at 0x104ffc460> ignored
ブローカー コード:
import zmq
context = zmq.Context()
frontend = context.socket(zmq.ROUTER)
backend = context.socket(zmq.DEALER)
frontend.bind("tcp://127.0.0.1:5559")
backend.bind("tcp://127.0.0.1:5560")
# Initialize poll set
poller = zmq.Poller()
poller.register(frontend, zmq.POLLIN)
poller.register(backend, zmq.POLLIN)
print 'starting Router-Dealer Broker...'
# Switch messages between sockets
while True:
socks = dict(poller.poll())
if socks.get(frontend) == zmq.POLLIN:
message = frontend.recv()
print 'passing message from frontend to backend'
print message
more = frontend.getsockopt(zmq.RCVMORE)
if more:
backend.send(message, zmq.SNDMORE)
else:
backend.send(message)
if socks.get(backend) == zmq.POLLIN:
message = backend.recv()
print 'passing message from backend to frontend'
print message
more = backend.getsockopt(zmq.RCVMORE)
if more:
frontend.send(message, zmq.SNDMORE)
else:
frontend.send(message)
ブローカー ログ:
passing message from frontend to backend
???0{pK???+E?5??
passing message from frontend to backend
passing message from frontend to backend
{'foo':'bar'}//data from client (connected to the broker's router port).
明らかに、私のブローカーは一度に 3 つのリクエストをワーカーに送信しますが (これは正常です)、最初のパケットは意味不明で、2 番目のパケットは空のように見え、3 番目のパケットには最初に送信したかったデータが最終的に含まれています。
したがって、ブローカーはパケットを送信しますが、worker.py はデータを受信しないようです。