【问题标题】:How to wait for goroutine to finish after lambda handler has replied backlambda处理程序回复后如何等待goroutine完成
【发布时间】:2023-04-03 00:10:02
【问题描述】:

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

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

我不确定这是否可能。

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

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

【问题讨论】:

    标签: go aws-lambda goroutine


    【解决方案1】:

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

    更可靠的方法:

    1. 接听电话并记录所需的任何输入数据。
    2. 将数据放入 SQS
    3. 使用 HTTP 200 响应
    4. 另一个(SQS 触发)函数进行处理,如果需要,在记录的 response_url 上调用 Slack

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多