Python AWS boto sqs-为什么可以';我发布的消息是否大于196000字节?

Python AWS boto sqs-为什么可以';我发布的消息是否大于196000字节?,python,amazon-web-services,boto,amazon-sqs,Python,Amazon Web Services,Boto,Amazon Sqs,据《每日邮报》报道,人们可以发布多达256KB的信息。我将队列配置为256KB的数据,但是当我使用boto发布时,我的最大输出为196000字节。关于这一点,我从SQS得到以下回应: boto.exception.SQSError: SQSError: 400 Bad Request <?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"> <Err

据《每日邮报》报道,人们可以发布多达256KB的信息。我将队列配置为256KB的数据,但是当我使用boto发布时,我的最大输出为196000字节。关于这一点,我从SQS得到以下回应:

boto.exception.SQSError: SQSError: 400 Bad Request
<?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/">
<Error><Type>Sender</Type><Code>InvalidParameterValue</Code><Message>
Value for parameter       MessageBody is invalid. Reason: Message body must be shorter     than 262144 bytes.</Message>
<Detail/></Error><RequestId>dd24151b-d499-5bb1-acd0-5f776011e960</RequestId></ErrorResponse>
用于说明以下内容的小型python程序:

from boto.sqs.message import Message
from boto.sqs.connection import SQSConnection
from boto.sqs.message import Message
import sys

sqs_conn = SQSConnection(AWS_KEY, AWS_SECRET)

data = mylong_256kb_string

print sys.getsizeof(data)
current_queue = sqs_conn.create_queue('test_temp_queue')

m = Message()
m.set_body(data)

current_queue.write(m)

这是因为默认情况下,boto base64在发送消息之前对消息的有效负载进行编码,并在读取时对其进行解码。主要是历史原因,;在SQS的早期,对SQS消息中的字符类型有很多限制。现在情况已经不是这样了,所以可能不需要编码/解码

要绕过它,只需使用
boto.message.RawMessage
类而不是
boto.message.message