ROUTER にレンダリングする DEALER ソケットがあり、メッセージが到着すると、json としてデコードできません。受信したテキストを印刷して Python 端末にコピーすると、デコードできますが、受信コードはできません。
コード送信は次のとおりです。
self._out_socket = self._out_context.socket(zmq.DEALER)
self._out_socket.connect("ipc://testout")
self._out_socket.send_json(bump)
これを受け取るコードは次のとおりです。
ip_soc.socket(zmq.ROUTER)
ip_soc.socket.bind("ipc://testout")
ip_stream = ZMQStream(ip_soc.socket)
ip_stream.on_recv(send_res)
#... ioloop start here to wait
このメッセージが送信されたとき:
{'index': 0, 'image_generated': 'false', 'resdict': [], 'result': [' (\\mathrm{\\%i}1) \x05\x05'], '_id': u'1ceb8c99c1a248a48418a6067b335613', 'purpose': 'result'}
ここに私が受け取るものがあります:
['\x00k\x8bEg', '{"index":0,"image_generated":"false","resdict":[],"result":[" (\\\\mathrm{\\\\%i}1) \\u0005\\u0005"],"_id":"1ceb8c99c1a248a48418a6067b335613","purpose":"result"}']
デコードしようとすると(上記のリストの2番目の部分:)
辞書 = json.loads(メッセージ[1])
私はこのエラーに遭遇しました:
No JSON object could be decoded
何がうまくいかないのですか?PUSH と PULL を使用すると、同じコードが正常に機能します。最終的な結果として、複数の独立したプロセスが 1 つのレシーバーに送信できる N 対 1 の zmq スキームが望ましいと考えているため、DEALER-ROUTER を使用しようとしています。