登录
首页 >  Golang >  Go问答

等待 goroutine 完成后如何响应 lambda 处理程序

来源:stackoverflow

时间:2024-02-28 17:54:23 121浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《等待 goroutine 完成后如何响应 lambda 处理程序》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我正在使用 Go 和 Aws Lambda 编写一个 Slack 机器人。 Slack 要求机器人在 3 秒内回复。但是,有时我无法让它回复那么快,因为它正在与其他无服务器应用程序“对话”以请求一些数据或调度任务。我以前从未使用过 goroutine,但我希望我可以实现这样的东西:

  1. Lambda 收到请求
  2. 机器人创建一个 goroutine 来处理此请求并采取相应的行动
  3. 处理程序不会等待所有这些操作完成,而是立即回复 200。
  4. Lambda 继续运行,直到 goroutine 完成。

我不确定这是否可能。

我读过有关 sync.WaitGroup 的内容,但我不确定如何将其与 main 函数合并在一起。我应该在处理程序中使用它吗?但我需要 return 响应,而这不是我可以包装到 goroutine 中的函数。

理想情况下,我希望处理程序立即回复,然后在后台处理 goroutine。


解决方案


请求完成后,不要尝试在 lambda 处理程序中执行任何操作。

更可靠的方法:

  1. 接受呼叫并记录所需的任何输入数据。
  2. 将数据放入SQS
  3. 使用 HTTP 200 进行响应
  4. 另一个(SQS 触发的)函数执行处理,并在需要时回调 Slack 记录的 response_url

理论要掌握,实操不能落!以上关于《等待 goroutine 完成后如何响应 lambda 处理程序》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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