基于流的lambda并发执行

时间:2017-12-06 20:18:20

标签: python-3.x amazon-web-services concurrency aws-lambda boto3

我有一个python lambda函数,当Dynamodb中有INSERT或UPDATE时会触发它。我们知道,这是一个基于流的调用。如果有1000条记录插入到Dynamodb中,并且我将批量大小设置为1.我的问题是lambda一个接一个地运行每个记录。如何更改它以并行运行所有1000条记录(并发执行)?我应该导入任何额外的python模块,如“来自concurrent.futures导入ThreadPoolExecutor”,而不是我用于我的工作? (我的代码在这里发布真的很大)

1 个答案:

答案 0 :(得分:0)

您无法控制流处理的并行性。

AWS DynamoDB流会将DynamoDB表行分隔为分片。每个分片将连续处理(一次一批)。这是为了确保"顺序"处理行。

但是,如果您的表有大量写入,则DynamoDB流可能会将分片拆分并重新分割为较小的父分片和子分片。碎片可以并行处理。

请参阅http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html

您可以做的最好的控制是增加"批量大小" 1.如果您确信可以同时处理数据库更新,那么您可以同时处理批量大小>您收到的多行。 1在Lambda函数中。