go - Go例程AWS lambda

标签 go aws-lambda

我是新来的。这个周末试图通过创建带有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/

相关文章:

go - 将 Go Modules 与需要 "make install"的包一起使用

从 S3 存储桶访问时出现 java.io.FileNotFoundException?

aws-lambda - 如何在无服务器 lambda 中使用 Typeorm 的装饰器?

mysql - aws lambda 函数连接问题 rds 太多

amazon-web-services - aws lambda 环境中的 aws_access_key_id

go - 如何使 Go append 在范围循环内工作

go - vim-go GoDebugBreakpoint 无法切换

http - 绕过 golang http 处理程序

amazon-web-services - 无法使用 CloudFormation 在 Lambda 函数上创建 SNS 事件源

go - panic()stacktrace不显示函数参数