我是新来的。这个周末试图通过创建带有go、aws lambdas和https://apex.github.io/up/的slash命令来学习它。尝试使用一个lambda来通知slack,并在消息中尽快出现问题,然后从那里调用另一个lambda来执行重载提升,并借助web hooks将结果粘贴回slack通道。问题是,这个http.Get(...
正在阻塞并等待重提升完成(我不希望这样,slack有3s超时)。当我将这个请求逻辑添加到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)
}
最佳答案
好的,所以今天我找了点时间调查我的问题,我找到了解决办法。我将请求逻辑添加回go例程,然后在函数调用之后,我添加了time.Sleep(1 * time.Second)
以确保在运行时退出之前发出请求。喜欢这里的答案http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html#gor_app_exit
初学者明白了:)
关于go - Go例程AWS lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46266903/