2つのuサービスがメッセージキュー(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'}
のpython3にpython2と復号化にエンコーディングをやって私が手:
data={b'command': b'run', b'json': b'{"msg": ""}', b'servicename': b'echo', b'sender': b'bla-blah'}
なぜデータが非「完全」に復号されます? python2とpython3の互換性を得るために、送信側/受信側で何をすべきですか?
'unicode'文字列、または' str'のバイト列あなたのPython 2のコードを使用していますか? – Blckknght
@Blckknght:修飾されていない文字列( '' mystring'')。私は、 '' __future__ import unicode_literals'をpython2とpython3の間で共有されているモジュールで使う必要があると思います – dangonfast