将python BOTO与AWS SQS一起使用,获取无意义的字符

时间:2013-12-12 18:21:14

标签: python amazon-web-services amazon-sqs

所以,我使用python和BOTO来访问我的AWS SQS。我在SQS中有一些消息,我可以从AWS仪表板中看到这些消息。但是,当我尝试通过python获取这些消息时,通过的字符只是乱码。知道这里发生了什么吗?

conn = boto.sqs.connect_to_region("us-east-1") 
q = conn.get_queue('my-worker-queue')
print q 
#read from message queue
message = q.read(60)
print message
print message.get_body()

鉴于上面的代码,我得到以下内容:

Queue(https://queue.amazonaws.com/247124526695/my-worker-queue)
<boto.sqs.message.Message instance at 0x16f31b8>
??e??b?+??-

消息队列中的文本如下:

hello this is a test

1 个答案:

答案 0 :(得分:6)

我猜原因是base64解码问题,因为boto使用base64进行消息编码和解码。您可以尝试使用get_body_encoded method

print message.get_body_encoded()

其他选项转换为RawMessage

from boto.sqs.message import RawMessage
q.set_message_class(RawMessage)

<强>更新

是的,你的测试用例很清楚:

>>> print 'hello this is a test'.decode('base64')
??e??b?+??-