小编Can*_*hin的帖子

执行等待异步操作时的 AWS Lambda 行为?

假设 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 执行环境中的表现如何?

c# amazon-web-services .net-core aws-lambda aws-api-gateway

5
推荐指数
0
解决办法
888
查看次数