我试图使用concurrent.futures异步地从AWS DynamoDB检索项,以缩短函数时间。
def retrieve_dynamo_item(dynamo_tablename, key):
dynamodb = boto3.resource('dynamodb')
dynamo_table = dynamodb.Table(dynamo_tablename)
dynamo_result = dynamo_table.get_item(Key=key)
return dynamo_result.get('Item')
def lambda_handler(event, context):
dynamo_queries = ## code
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
futures = [executor.submit(retrieve_dynamo_item, dynamo_table, key) for dynamo_table, key in dynamo_queries]
final_result = []
for f in concurrent.futures.as_completed(futures):
if f.result():
final_result += f.result().get('result')然而,在部署和测试lambda函数时,性能似乎没有得到改善,但实际上比同步运行查询更糟糕。对原因有什么建议吗?
发布于 2021-06-16 12:23:12
并行执行很可能受到该函数可用的计算能力的影响。使用默认内存分配,您没有太多的CPU。有关更多详细信息,请参见此answer
https://stackoverflow.com/questions/68002486
复制相似问题