【发布时间】:2016-04-20 06:42:22
【问题描述】:
两个 uService 通过消息队列 (RabbitMQ) 进行通信。数据使用message pack编码。
我有以下几种情况:
- 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:非限定字符串 (
'mystring')。我想我需要在 python2 和 python3 之间共享的模块中from __future__ import unicode_literals
标签: python-2.7 python-3.x rabbitmq messagepack