来自rabbitmq队列的base64'payload'字符串无法正确解码

时间:2014-11-24 02:14:43

标签: python rabbitmq celery

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 dict。我想知道是否有一些方法可以正确解码来自rabbitmq的有效负载。队列中消息的原始内容来自芹菜。实际上,队列包含在其上排队的芹菜任务。

1 个答案:

答案 0 :(得分:3)

似乎数据是由pickle或其他人序列化的。

你可以这样试试:

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