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

How to wait for goroutine to finish after lambda handler has replied back

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

  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