1 回答
- 最新
- 投票最多
- 评论最多
1
Unfortunately, Lambda doesn't provide a CancellationToken
(to my knowledge). It can, however, tell you the amount of time remaining before it gives up, which you can build a CancellationToken
around. For example:
public async Task<Stream> Process(Stream input, ILambdaContext lambdaContext) { var timeout = lambdaContext.RemainingTime.Subtract(TimeSpan.FromSeconds(5d)); using var cts = new CancellationTokenSource(timeout); await my.Work(cts.Token); return Stream.Null; }
When the RemainingTime
has been reached, Lambda will abruptly shut everything down. There is seemingly no nice way to handle that. Since cancellation is mutual, you'll want to pad the timeout with a few seconds to shut down gracefully. I have arbitrarily selected 5 seconds, but your needs might be different.
When you use the Lambda to ASP.NET Core integration, this process is handled for you automatically and you can just add CancellationToken
as a parameter to your action methods as normal.
已回答 2 年前
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前