2013-09-25 73 views
1

我在Ubuntu盒子上用RabbitMQ代理调用芹菜中的任务,但只是使用Redis作为结果后端进行设置。我可以找到任务结果,但它们看起来像“\ x80 \ x02} q \ x01(x \ x0 \ x0 \ x0 \ 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 ......”Redis中的芹菜结果编码

我的默认编码芹菜是ASCII和Redis的没有出现在它的基础的conf指定的编码。

utils.encoding.default_encoding() 
'ascii' 

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

回答

3

结果默认被腌成utf-8字符串(请参阅任务serializers)。您可以手动检查有效载荷:

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

pickle一般是罚款,除非你是在一个多语种环境中操作,然后JSON或msgpack都很好的解决方案。

+0

像梦一样工作。谢谢! – bwarren2