【问题标题】:always get "502 Bad gateway" when use app engine VM使用应用引擎虚拟机时总是得到“502 Bad gateway”
【发布时间】:2015-08-27 11:32:30
【问题描述】:

我正在尝试将应用引擎虚拟机用于我的项目(环境:Go)。但是经过几天的搜索,我仍然无法解决问题:

  1. 我无法使用包“google.golang.org/appengine”和“google.golang.org/cloud/*” 当我部署包含上述软件包的代码时,我可以成功部署,但是当我访问 URL 时,总是返回“502 Bad Gateway”。 如果我在没有上述包的情况下部署代码,一切都会很好

  2. 在更新我的某些包后出现上述问题。因为我在“go get -u ...”之后遇到了这个问题,在此之前一切正常

  3. 当我在这里看到最后一次提交时(包“google.golang.org/appengine”):https://github.com/golang/appengine/commit/25b8450bec636c6b6e3b9b33d3a3f55230b10812 我不明白什么时候替换“package helloworld”->“package main”。如果我使用“package main”进行部署,我不知道如何访问处理程序。例如:

func main() { http.HandleFunc("/hello", helloHandler) appengine.Main() }

部署后,如何测试??因为“my_app.appspot.com/hello”返回404,找不到页面

我不知道是否有其他人有同样的问题。请帮忙,谢谢!!!

【问题讨论】:

    标签: google-app-engine go


    【解决方案1】:

    我认为你得到 502 是因为在尝试获取 Context 时出现恐慌。通过 ssh 连接到 VM 实例后,您可以使用命令 sudo docker logs -f gaeapp 看到它。

    似乎 appengine vm 的所有示例都已损坏,您应该使用 init(),而不是 main() 进行初始化:

    package notmainpackage
    
    import (
      "net/http"
    
      "google.golang.org/appengine"
      "google.golang.org/appengine/log"
    )
    
    func init() {
        http.HandleFunc("/", handle)
        appengine.Main()
    }
    
    func handle(w http.ResponseWriter, r *http.Request) {
       ctx := appengine.NewContext(r)
       log.Infof(ctx, "got appengine context")
    }
    

    【讨论】:

    • 你用'main'函数做什么?留空?除非我有,否则我无法部署到应用引擎。
    • 如果您使用的是灵活的环境,那么您必须有一个 main(){}
    猜你喜欢
    • 2018-04-14
    • 1970-01-01
    • 2016-09-28
    • 2019-08-24
    • 2020-11-28
    • 2016-04-09
    • 2020-11-02
    • 1970-01-01
    • 2018-08-22
    相关资源
    最近更新 更多