2014-11-24 110 views
1
from pyrabbit.api import Client 
import base64 

     msg = cl.get_messages('vhost', "somequeue", count=1)[0] 
     rawinput = msg['payload'] 
     print rawinput 
>> gAJ9cQEoVQdleHBpcmVzcQJOVQN1dGNxA4hVBGFyZ3NxBF1xBShY1AIAAHsiaGlzdG9y 
     input = base64.b64decode(rawinput) 
     print input 

>> �}q(UexpiresqNUutcq�Uargsq]q(X� 

這會返回一個奇怪的字符,否則不會產生合適的可分析python字典。我想知道是否有一些方法可以正確解碼rabbitmq的有效載荷。隊列中消息的原始內容來自芹菜。事實上,隊列中包含芹菜任務正在排隊。base64來自rabbitmq隊列的'payload'字符串無法正確解碼

回答

3

它看起來數據被pickle或別的東西序列化。

你可以嘗試這樣的:

import cPickle as pickle 
rawinput = msg['payload'] 
input = rawinput.decode("base64") 
data = pickle.loads(input) 
print data