python - 如何使用 Boto3 和 Python 将多个批处理消息从列表发送到 SQS 队列
问题描述
我有一个整数列表(integerList),我想将其传递到 SQS 队列中,其中进入队列的每条消息都是列表中的整数。
我可以使用命令一次发送一条消息,send_message()
代码如下。
import boto3
sqsResource = boto3.resource('sqs')
def write_sqs(integerList):
queue = sqsResource.get_queue_by_name(QueueName=NAMEOFQUEUEHERE)
for i in integerList:
response = queue.send_message(MessageBody=str(i),
MessageGroupId='TESTING')
但是,我想加快功能并分批发送消息。目前,AWS SQS 允许使用该命令一次最多批处理 10 条消息send_messages()
,但我不确定如何构建Entries=
批处理发送的属性。我正在使用 将 integerList 分解为 10 个较小的列表chunks = [integerList[x:x+10] for x in range(0, len(integerList), 10)]
,但接下来的步骤尚不清楚。
解决方案
根据文档 Entries
是消息列表。
对于Entries
参数类型中的每个条目,链接中都有详细说明。
import boto3
sqsResource = boto3.resource('sqs')
def write_sqs(integerList):
queue = sqsResource.get_queue_by_name(QueueName=NAMEOFQUEUEHERE)
entries = []
for i in integerList:
entry = {
'Id': 'id%s' % str(integerList[i]),
'MessageBody': str(integerList[i])
}
entries.append(entry)
response = queue.send_messages(entries)
推荐阅读
- c - 如果 .sh 文件和 linux c 文件的路径不同,那么如何使用系统命令呢?看过一个回答。在stackoverflow上但不清楚
- r - R中的bin和转置
- python - 在背景上创建 python 图
- javascript - 函数结果只持续一毫秒
- swift - 创建没有任何持久数据的 NSPersistentContainer
- c# - C# HttpWebRequest 表单发布数据
- json - 如何通过 JSON 将所有记录正确显示为数组
- javascript - 反应:将`this`传递给具有多个功能的onClick
- testcontainers - 测试容器:不同网络之间的通信
- javascript - 尚未执行的代码会影响其上方的上下文