2

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 はデータを受信しないようです。

4

0 に答える 0