AWS Lambda 函数未同时 运行

AWS Lambda function not running concurrently

我有一个从另一个函数调用的 AWS Lambda 函数。第一个函数处理数据并在完成时调用另一个函数。第二个函数将同时获取n个实例到运行。

例如,第二个函数需要大约 5 秒(每次调用)到 运行;我希望此函数 运行 全部在它们被调用时总共 运行 大约 5 秒的时间。

该函数花费的时间比那个长,并且 运行 每个函数一次一个,直到一个先验完成;这个过程需要 5*n 秒。

我看到我可以将函数扩展到 运行,在我所在的地区最多 1,000 个,如 AWS 所述。我怎样才能同时使这个运行?不需要代码示例,只需一个我可以查看以解决问题的一般过程。

第一个函数头如下所示:(我还有其他代码获取我遗漏的 json_file)

def lambda_handler(event=None, context=None):

for n in range(len(json_file)):

    response = client.invoke(
        FunctionName='docker-selenium-lambda-prod-demo',
        InvocationType='RequestResponse',
        Payload=json.dumps(json_file[n])
        )

    responseJson = json.load(response['Payload'])

其中 json_file[n] 被发送到 运行 的另一个函数。

正如您在 boto3 docs 中看到的关于调用函数:

Invokes a Lambda function. You can invoke a function synchronously (and wait for the response), or asynchronously. To invoke a function asynchronously, set InvocationType to Event .

如果您正在使用 RequestResponse,您的代码 将等待调用的 lambda 终止

您可以将 InvocationType 更改为 Event 或使用类似 ThreadPoolExecutor 的内容并等待所有执行完成