如何让Celery返回json对象而不是bytea?

时间:2017-06-11 20:31:58

标签: python json postgresql celery

这是我第一次在Python 3中使用Celery。为了让我的脚湿透,我正在返回一个字符串“这是一个hello任务”作为工人的结果并存储这是一个Postgres数据库。当我从数据库访问结果时,它以Python中的内存视图的形式存在,数据库本身有一个celery_taskmeta的结果列作为数据类型bytea(这也是Celery发送给数据库的内容)。

这是我的芹菜配置:

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']

为什么我没有将json结果存储在我的数据库中?另外,我无法将bytea解码为json或utf-8文本,我收到此错误:

这是以字节为单位的内容:b'\x80\x04\x95\x1b\x00\x00\x00\x00\x00\x00\x00\x8c\x17"this was a hello task"\x94.'

命令:json.loads(t.tobytes())

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

1 个答案:

答案 0 :(得分:0)

您需要将字节数据转换为unicode

rows=10