我目前本地开发使用Go编程语言AppEngine应用程序。我的操作系统为Mac OS X 10.8.3。
我一直在AppEngine上的开发服务器(dev_appserver.py)运行为我发展。每次我保存的我的应用程序文件(其中服务器是看更改)之一,OS X防火墙弹出对话框说“你要允许_go_app接收传入连接?”。再次消失之前该对话框仅有不到第二可见。
我怎样才能得到它停止雨后春笋般冒出来的时间?我试图在这两个_go_app应用和简单的Python接受或拒绝传入连接OS X防火墙有明确的规则,但不管它会保留(简述)弹出。
聊到了App Engine的人对谷歌组,显然这是固定的SDK(1.8.1)的最新版本。
我没有得到防火墙弹出当我运行goapp serve
,但我得到它,当我与使用go test
包东西跑google.golang.org/appengine/aetest
。为了解决这个问题,我需要打补丁两个文件强制所有测试服务器只在localhost
听。我提交了拉请求,所以也许这将让上游固定:https://github.com/golang/appengine/pull/25
$GOPATH/src/google.golang.org/appengine/internal/main_vm.go
线25;更改:
if err := http.ListenAndServe(":"+port, http.HandlerFunc(handleHTTP)); err != nil {
log.Fatalf("http.ListenAndServe: %v", err)
}
至:
host := ""
if IsDevAppServer() {
host = "localhost"
}
if err := http.ListenAndServe(":"+port, http.HandlerFunc(handleHTTP)); err != nil {
log.Fatalf("http.ListenAndServe: %v", err)
}
我还需要修补$HOME/google-cloud-sdk/platform/google_appengine/lib/portpicker/portpicker/__init__.py
线79:
sock.bind(('', port))
至:
sock.bind(('localhost', port))
不知道什么改变,但我得到使用GCloud SDK捆绑dev_appserver.py
此错误。 (2019年2月3日,MacOS的莫哈韦/ 10.14,谷歌云SDK 232.0.0)与围棋1.11。
一起去1.11,明确结合localhost
帮助:
host := ""
if os.Getenv("NODE_ENV") == "development" {
host = "localhost"
log.Printf("Binding to 'localhost' only for '%s'", envPurpose)
}
srv := &http.Server{
Handler: r,
Addr: fmt.Sprintf("%s:%s", host, port),
WriteTimeout: 10 * time.Second,
ReadTimeout: 10 * time.Second,
}
log.Fatal(srv.ListenAndServe())
编辑:但是,尽管这对防止初期开始实施的“禁止/允许”弹出,它没有自动重启,除非帮我没有明确的app.yaml
文件中声明的处理程序。显然,在后台进行更多的事情。
然而,随着“裸” app.yaml
文件,它的工作根据需要我。