2013-09-25 175 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