2017-06-11 3 views
0

Dies ist mein erstes Mal mit Sellerie in Python 3 arbeiten. Um meine Füße nass zu bekommen, gebe ich eine Zeichenfolge "Dies war eine Hallo-Aufgabe" als Ergebnis von einem Arbeiter und Speichern ist dies eine Postgres-Datenbank. Wenn ich auf das Ergebnis von meiner Datenbank zugreife, hat es die Form einer Speicheransicht in Python und die Datenbank selbst hat eine Ergebnisspalte von sellery_taskmeta als Datentyp bytea (das ist auch, was Sellery an die Datenbank sendet).Wie bekomme ich Sellerie, um ein Json-Objekt anstelle von Bytea zurückzugeben?

Das ist mein Sellerie config:

import os 

broker_url = os.environ.get('RABBITMQ_BIGWIG_TX_URL') 
worker_concurrency = 3 
result_backend = 'db+postgres://...' 
task_serializer = 'json' 
result_serializer = 'json' 
accept_content = ['json'] 

Warum bin ich kein json Ergebnis in meiner Datenbank gespeichert zu bekommen? Auch kann ich nicht die bytea dekodieren JSon oder utf-8-Text, bekomme ich diesen Fehler:

hier ist, wie es in Bytes aussieht: b'\x80\x04\x95\x1b\x00\x00\x00\x00\x00\x00\x00\x8c\x17"this was a hello task"\x94.'

Befehl: json.loads(t.tobytes())

Ergebnis: UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

Antwort

0

Sie benötigen Byte-Daten zu konvertieren

t.decode("utf-8") 
+0

ich das versucht, Unicode, aber ich bekomme den gleichen Fehler: UnicodeDecodeError: 'utf-8' Codec ca Byte ungültig Start – exchez

+0

https://docs.python.org/3.5/library/stdtypes.html#bytes.decode Sie 2. Parameterfehler zu unterdrücken, wie 't verwenden: nicht Byte 0x80 in Position 0 dekodieren .decode ("utf-8", errors = "ignorieren") ' – funphp

Verwandte Themen