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
的内容并等待所有执行完成
我有一个从另一个函数调用的 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
的内容并等待所有执行完成