登录
首页 >  Golang >  Go问答

可以在子 lambda 完成之前退出吗?

来源:stackoverflow

时间:2024-02-28 20:48:25 191浏览 收藏

你在学习Golang相关的知识吗?本文《可以在子 lambda 完成之前退出吗?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我有两个用 go 编写的 aws lambda。一个 lambda 调用另一个,如下所示:

payload, err := json.marshal(request)
if err != nil {
    log.printf("error: could not marshal request [%v] into model.childlambdarequest - %v\n", request, err)
    return false
}

log.printf("--- debug sending payload: %s", payload)

// invoke child

result, err := client.invoke(&lambda.invokeinput{
    functionname: aws.string(lambdaname),
    payload:      payload,
})
if err != nil {
    log.printf("error: could not invoke lambda function client [%v] - %v\n", lambdaname, err)
    return false
}

子 lambda 完成如下:

return model.EventResponse{Success: true}, nil

我知道这正在做两件事:1.)它正在完成执行,2.)它正在返回一个值。有什么方法可以将这两个操作分开,以便我可以在顶部返回一个值,但稍后完成执行?


解决方案


是的,您需要将 InspirationType: "Event" 传递给 Invoke 调用,记录为 here。默认调用类型为 RequestResponse,它等待来自调用的 Lambda 的响应。

可以使用 Destinations in Lambda .

尽管我会查看 AWS Step Functions,它为您提供了此功能以及内置重试和错误处理功能。 它与现有的 Lambda 函数配合使用,并且具有非常易于使用的界面。

最后一个可行的选项是,将消息从第一个函数发送到 SQS 队列, 第二个 lambda 由 SQS 队列触发。这还为您提供了重试功能。

本篇关于《可以在子 lambda 完成之前退出吗?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>