eli*_*ang 8 python boto amazon-sqs amazon-web-services
默认情况下,boto会在将消息发送到SQS之前使用Base64对消息进行编码.示例代码:
conn = boto.connect_sqs('access_key_id', 'secret_key')
q = conn.get_queue('myqueue')
m = Message()
m.set_body('hello!')
q.write(m)
Run Code Online (Sandbox Code Playgroud)
通过将Raw()替换为RawMessage(),我可以将原始消息发送到队列而无需编码.但是如何在不解码的情况下从队列中读取消息?如果我使用以下代码:
rs = q.get_messages(1)
if rs:
m = rs[0]
print m.get_body()
Run Code Online (Sandbox Code Playgroud)
m.get_body()自动返回解码结果.有没有办法检索原始邮件?
谢谢!
kk1*_*957 14
如果您只想阅读SQS队列中的消息并且生产者是其他人,则在调用get_messages()时可能会开始看到垃圾字符.请参阅https://github.com/boto/boto/issues/831
在这种情况下再次解决的问题是
from boto.sqs.message import RawMessage
q.set_message_class(RawMessage)
Run Code Online (Sandbox Code Playgroud)
实际上Message类继承自RawMessage,所以它拥有所有的方法.其中一种方法是:
在将消息内容写入SQS时,此方法实际上是Queue.write方法使用的半私有方法.您可能不需要在正常的事件过程中调用此方法.
的构造函数boto.sqs.queue.Queue有一个message_class参数,您可以将其设置为RawMessage。另一方面,我不明白为什么在传输数据之前不对其进行编码是有意义的。
| 归档时间: |
|
| 查看次数: |
7780 次 |
| 最近记录: |