Go例程AWS lambda

时间:2017-09-17 17:28:00

标签: go aws-lambda

我是新手。这个周末试图通过使用GO,AWS Lambdas和https://apex.github.io/up/创建松弛的斜杠命令来学习它。尝试是让一个lambda通知slack,消息说有事情正在发生,然后从那里调用另一个lambda来执行繁重的工作,并在web钩子的帮助下将结果粘贴回松弛通道。问题是这个http.Get(...正在阻塞并等待繁重的工作完成(我不想要,而且Slack有3秒超时)。当我将此请求逻辑添加到goroutine时,它在本地工作,但在部署到AWS时不会。我得到的消息是松散的我在上面!会尽快通知您!几乎立即通知您,但没有其他事情发生。

package main

import (
    "fmt"
    "log"
    "net/http"
    "os"
)

func main() {
    addr := ":" + os.Getenv("PORT")
    http.HandleFunc("/", handleRequest)
    log.Fatal(http.ListenAndServe(addr, nil))
}

func handleRequest(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "I'm on it! Will inform you ASAP!")

    if err := r.ParseForm(); err != nil {
        http.Error(w, "Error parsing form.", http.StatusBadRequest)
        return
    }

    env := r.Form.Get("text")

    http.Get("https://some.path.to.another.lamda?env=" + env)
}

1 个答案:

答案 0 :(得分:0)

好的,今天我找到了一些时间调查我的问题,我找到了解决方案。我将请求逻辑添加回go例程,然后在该函数调用之后添加了time.Sleep(1 * time.Second)以确保在运行时退出之前发出了请求。喜欢这里的答案http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html#gor_app_exit 初学者:)