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

如何在 lambda 处理程序回复后等待 goroutine 完成

如何在 lambda 处理程序回复后等待 goroutine 完成

Go
小怪兽爱吃肉 2023-06-26 15:30:48
我正在使用 Go 和 Aws Lambda 编写一个 Slack 机器人。Slack 要求机器人在 3 秒内回复。然而,有时我无法让它回复那么快,因为它正在与其他无服务器应用程序“对话”以请求一些数据或调度任务。我以前从未使用过 goroutine,但我希望我可以实现这样的东西:Lambda 收到请求机器人创建一个 goroutine 来处理这个请求并采取相应的行动处理程序不会等待所有这些操作完成,而是立即回复 200。Lambda 继续运行,直到 goroutine 完成。我不确定这是否可能。我读过有关 的内容sync.WaitGroup,但我不确定如何将它与 main 函数合并在一起。我应该在处理程序中使用它吗?但我需要return响应,而这不是我可以包装到 goroutine 中的函数。理想情况下,我希望处理程序立即回复,然后在后台处理 goroutine。
查看完整描述

1 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

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

更可靠的方法:

  1. 接受呼叫并记录所需的任何输入数据。

  2. 将数据放入SQS中

  3. 使用 HTTP 200 进行响应

  4. 另一个(SQS 触发的)函数执行处理,并在需要时回调 Slack 记录的数据response_url


查看完整回答
反对 回复 2023-06-26
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

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