2013-07-03 3 views
1

У меня есть разъем DEALER, разорванный на ROUTER, и как только сообщение поступит, я не могу его декодировать как json, если я распечатаю полученный текст и скопирую его на терминал python, я могу его декодировать, но код приема не в состоянии.как я могу исправить ошибку: никакой объект JSON не может быть декодирован из сообщения zmq DEALER to ROUTER?

здесь код отправки:

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"}'] 

если я пытаюсь расшифровать его (вторую часть приведенного выше списка :)

словаре = json.loads (сообщение [1])

им встретились с этой ошибкой:

No JSON object could be decoded 

, что идет не так? Тот же код работает отлично, если я использую PUSH и PULL. Конечный результат: мне нужна схема с N до 1 zmq, где несколько независимых процессов могут отправлять один приемник, поэтому im пытается использовать DEALER-ROUTER.

+0

У меня была такая же проблема, и я полагаю, что я нашел ответ здесь http://stackoverflow.com/a/34242555/ 202168 – Anentropic

ответ

0

его хорошо, я использовал модуль Аст, используя принятый ответ от этого так вопрос here