Zwei uServices kommunizieren über eine Nachrichtenwarteschlange (RabbitMQ). Die Daten werden unter Verwendung von message pack codiert.Interoperabilitätsprobleme python2 python3
Ich habe die folgenden Szenarien:
- python3 -> python3: adaequat
- python2 -> python3: Codierung gibt
Encoding erfolgt mit:
umsgpack.packb(data)
Decodierung mit:
umsgpack.unpackb(body)
Wenn die Codierung und Decodierung in python3 tun erhalte ich:
data={'sender': 'producer-big-red-tiger', 'json': '{"msg": "hi"}', 'servicename': 'echo', 'command': 'run'}
Wenn Codierung auf python3 in python2 und Decodierung tun erhalte ich:
data={b'command': b'run', b'json': b'{"msg": ""}', b'servicename': b'echo', b'sender': b'bla-blah'}
Warum die Daten nicht decodiert werden "vollständig" ? Was soll ich am Sender/Empfänger tun, um Kompatibilität zwischen python2 und python3 zu erreichen?
Gibt es in Ihrem Python-2-Code verwenden 'unicode' Strings oder' str' Byte-Strings? – Blckknght
@Blckknght: nicht qualifizierte Strings (''mystring''). Ich denke, ich muss "von __future__ import unicode_literals" in den Modulen zwischen python2 und python3 – dangonfast