我正在使用 boto3 批量接收消息()。这将返回boto3 文档中指定的字典项。
收到这批消息后,我一一处理,想全部处理完后批量删除。我不想在处理完每个项目后一一删除它们。
delete_message_batch() 函数的语法与来自 receive_message() 函数的响应略有不同,因此我需要将来自 receive_message() 的响应 dict 重新格式化为合适的格式(仅使用 Id 和 ReceiptHandle)。
有没有更简单的方法可以直接使用 receive_message() 的响应进行批量删除?
这是我处理消息的方式。我创建了一个包含 id 和收据句柄的列表。id 不是强制性的,您可以插入 range(10) 的输出。此外,没有错误检查,因此您需要注意这一点。
response = SQS.receive_message(
QueueUrl=queue_url,
AttributeNames=[],
MaxNumberOfMessages=10,
MessageAttributeNames=['All'],
)
delete_batch = []
for message in response.get('Messages') or []:
# do stuff with each message
delete_batch.append(
{'Id': message['MessageId'], 'ReceiptHandle': message['ReceiptHandle']}
)
if delete_batch:
SQS.delete_message_batch(QueueUrl=queue_url, Entries=delete_batch)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2971 次 |
| 最近记录: |