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

时间:2019-06-13 05:40:53

标签: go aws-lambda goroutine

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

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

我不确定这是否可能。

我已经读过sync.WaitGroup,但不确定如何将它与主要功能结合在一起。我应该在处理程序中使用它吗?但是我需要return响应,而这不是我可以包装到goroutine中的函数。

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

1 个答案:

答案 0 :(得分:1)

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

更可靠的方法

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