2014-11-24 2 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� 

이상한 문자를 반환하고 그렇지 않으면 parseable python dict이 적절하지 않습니다. rabbitmq에서 페이로드를 제대로 디코딩 할 수있는 방법이 있는지 궁금합니다. 대기열에있는 메시지의 원래 내용은 샐러리로부터 온 것입니다. 실제로 대기열에는 대기중인 셀러리 작업이 포함되어 있습니다.rabbitmq 대기열의 base64 'payload'문자열을 올바르게 디코딩 할 수 없습니다.

답변

3

데이터가 피클 등으로 직렬화 된 것처럼 보입니다.

이 같은 시도 할 수 있습니다 :

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