1
兩個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