Два uServices общаются через очередь сообщений (RabbitMQ). Данные кодируются с использованием message pack.Проблемы с совместимостью python2 python3
У меня есть следующие сценарии:
- python3 -> python3: работа тонкая
- python2 -> python3: кодирование выдает
Кодирование осуществляется с помощью:
umsgpack.packb(data)
Декодирование с использованием:
umsgpack.unpackb(body)
При выполнении кодирования и декодирования в Python3 я получаю:
data={'sender': 'producer-big-red-tiger', 'json': '{"msg": "hi"}', 'servicename': 'echo', 'command': 'run'}
При выполнении кодирования в python2 и декодирования на Python3 я получаю:
data={b'command': b'run', b'json': b'{"msg": ""}', b'servicename': b'echo', b'sender': b'bla-blah'}
Почему данные не «полностью» декодируется ? Что мне делать с отправителем/получателем для обеспечения совместимости между python2 и python3?
ли ваш Python 2 кода использование 'unicode' строк, или' str' строки байтов? – Blckknght
@Blckknght: неквалифицированные строки ('' mystring''). Думаю, мне нужно «из __future__ импортировать unicode_literals» в модули, разделяемые между python2 и python3 – dangonfast