为了账号安全,请及时绑定邮箱和手机立即绑定

Lambda 函数处理程序 C# 中的取消令牌

Lambda 函数处理程序 C# 中的取消令牌

C#
绝地无双 2021-06-25 18:15:35
C# 中的 AWS Lambda 函数处理程序是否提供取消令牌?我已经阅读了 AWS 网站(https://docs.aws.amazon.com/lambda/latest/dg/dotnet-programming-model-handler-types.html)上的文档,但我看不到任何提到取消的地方令牌。我还检查了ILambdaContext传递给执行方法的 ,但那里没有任何内容。我以前使用过 Azure Functions,他们只是将它作为另一个参数传递给本文中描述的函数:https : //docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-类库#cancellation-tokens
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

答案是否定的,正如你所发现的。目前没有CancellationToken提供。


您可以使用ILambdaContext.RemainingTimeand制作自己的CancellationTokenSource:


public async Task FunctionHandler(SQSEvent evnt, ILambdaContext context)

{

    var cts = new CancellationTokenSource(context.RemainingTime);

    var myResult = await MyService.DoSomethingAsync(cts.Token);

}

我不确定这会有多大好处,因为当剩余时间用完时,Lambda 会被冻结,所以您的代码不会有机会优雅地停止。也许您可以估计您的代码需要多长时间才能正常停止,然后在剩余时间之前取消令牌,例如:


var gracefulStopTimeLimit = TimeSpan.FromSeconds(2);

var cts = new CancellationTokenSource(context.RemainingTime.Subtract(gracefulStopTimeLimit));



查看完整回答
反对 回复 2021-06-26
  • 1 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信