假设 APIGateway 触发一个等待 10 秒的函数(处理程序)
public async Task<APIGatewayProxyResponse> Get(APIGatewayProxyRequest request, ILambdaContext context){
var x = await Wait10Async();
return SomeAPIGatewayProxyResponse;
}
Run Code Online (Sandbox Code Playgroud)
Q1:当await
将控制流返回给函数处理程序本身时,这个容器(执行环境)会发生什么?显然,Lambda 在返回 APIGateway 之前等待 Task 完成,但是在这 10 秒内,容器(或其他)是否接受并执行了更多Get
功能?
问题背后的原因是 AWS Lambda 有 1000 个并发执行限制,它说每个执行都在单独的容器中运行,因此这让我质疑这种情况:
1 - APIGateway 接收 1000 个同时请求并启动 1000 个 Lambda 处理程序,这些处理程序在 10 秒后完成
在第一个请求之后(在它们完成之前)2 - 3 秒,另一个比方说 100 个请求来到 APIGateway。在这种情况下,所有 lambda 容器都已耗尽。
这是发生了什么还是await
有解决这个问题的魔法?我知道如何不await
阻塞经典视图应用程序中的循环。但是它在 Lambda 执行环境中的表现如何?