Redis中的芹菜结果编码

时间:2013-09-25 16:13:34

标签: redis celery

我在Ubuntu盒子上用RabbitMQ代理调用芹菜中的任务,但只是使用Redis作为结果后端进行设置。我可以找到任务结果,但它们看起来像“”\ x80 \ x02} q \ x01(U \ x06statusq \ x02U \ aSUCCESSq \ x03U \ ttracebackq \ x04NU \ x06resultq \ x05} q \ x06(X \ x06 \ x00 \ x00 \ x00result} q \一个(X \ X06 \ X00 \ X00 \ x00statusK \ x01X \ r \ X00 \ X00 \ x00total_resultsM \ XF4 \ x01X \一个\ X00 \ X00 \ x00matches]●\ b(} q \吨(X \一个\ X00 \ X00 \ x00players]●\ N(} q \ X0B(X \一个\ X00 \ X00 \ x00hero_idK \ x15X \ n \ X00 \ X00 \ x00account_idI4294967295 \ NX \ X0B \ X00 \ X00 \ x00player_slotK \ x00u} q \ X0C(X \一个\ X00 \ X00 \ x00hero_idK \ x0cX \ n \ X00 \ X00 \ x00account_idI4294967295 \ NX \ X0B \ X00 \ X00 \ x00player_slotK \ x01u} q \ r(X \一个\ X00 \ X00 \ x00hero_idK \ x1bX \ n \ X00 \ X00 \ x00account_i ....“

我的默认芹菜编码是ASCII,而Redis似乎没有在其基本conf中指定编码。

utils.encoding.default_encoding()
'ascii'

我应该如何将此文本转化为有意义的内容?我不知道这是如何编码的;任何建议的解码尝试?

1 个答案:

答案 0 :(得分:3)

默认情况下,结果会被绑定为utf-8字符串(请参阅任务serializers)。您可以使用以下方法手动检查有效负载:

import pickle
s = "\x80\x02}q..."
obj = pickle.loads(s)
print obj

pickle通常很好,除非您在多语言环境中运行,然后JSON或msgpack是很好的解决方案。