use*_*525 4 python amazon-sqs amazon-web-services
所以,我使用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()
Run Code Online (Sandbox Code Playgroud)
鉴于上面的代码,我得到以下内容:
Queue(https://queue.amazonaws.com/247124526695/my-worker-queue)
<boto.sqs.message.Message instance at 0x16f31b8>
??e??b?+??-
Run Code Online (Sandbox Code Playgroud)
消息队列中的文本如下:
hello this is a test
Run Code Online (Sandbox Code Playgroud)
我想原因是base64解码问题,因为boto base64用于消息编码和解码.您可以尝试使用get_body_encoded方法:
print message.get_body_encoded()
Run Code Online (Sandbox Code Playgroud)
其他选项是转换为RawMessage:
from boto.sqs.message import RawMessage
q.set_message_class(RawMessage)
Run Code Online (Sandbox Code Playgroud)
更新
是的,你的测试用例很明显:
>>> print 'hello this is a test'.decode('base64')
??e??b?+??-
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2171 次 |
| 最近记录: |