gpt4 book ai didi

python - 如何使用 Boto3 和 Python 将多个批量消息从列表发送到 SQS 队列

转载 作者:行者123 更新时间:2023-12-01 07:45:26 24 4
gpt4 key购买 nike

我有一个整数列表 (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 允许使用 send_messages() 命令一次最多批处理 10 条消息,但我不确定如何为批处理构建 Entries= 属性发送。我使用 chunks = [integerList[x:x+10] for x in range(0, len(integerList), 10)] 将 integerList 分解为 10 个较小的列表,但是下一个步骤不清楚。

最佳答案

基于 @liorko 的答案和一些试验和错误,这似乎有效,并且比我之前使用的 1×1 方法快得多。

import boto3

sqsResource = boto3.resource('sqs')

def write_sqs(integerList):
queue = sqsResource.get_queue_by_name(QueueName=NAMEOFQUEUEHERE)
maxBatchSize = 10 #current maximum allowed
chunks = [integerList[x:x+maxBatchSize] for x in range(0, len(integerList), maxBatchSize)]
for chunk in chunks:
entries = []
for x in chunk:
entry = {'Id': str(x),
'MessageBody': str(x),
'MessageGroupId': 'ANYTHINGYOUWANT'}
entries.append(entry)
response = queue.send_messages(Entries=entries)

关于python - 如何使用 Boto3 和 Python 将多个批量消息从列表发送到 SQS 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56484463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com