4

我目前正在使用 Go 编程语言在本地开发 AppEngine 应用程序。我的操作系统是 Mac OS X 10.8.3。

我在开发过程中保持 AppEngine 的开发服务器 (dev_appserver.py) 运行。每次我保存我的一个应用程序文件(服务器正在监视更改)时,OS X 防火墙对话框都会弹出“你想允许 _go_app 接收传入连接吗?”。该对话框仅可见不到一秒钟,然后再次消失。

我怎样才能让它停止一直弹出?我已经尝试在 OS X 防火墙中为 _go_app 应用程序和简单的 Python 设置明确的规则来接受或拒绝传入的连接,但不管它(短暂地)弹出什么。

4

3 回答 3

0

与 Google Groups 上的 App Engine 人员交谈,显然这已在最新版本的 SDK (1.8.1) 中修复。

于 2013-07-10T20:21:52.360 回答
0

我运行时没有弹出防火墙,但是当我使用任何使用该包的东西goapp serve运行时,我确实得到了它。为了解决这个问题,我需要修补两个文件以强制所有测试服务器只监听. 我提交了一个拉取请求,所以也许这会在上游得到修复:https ://github.com/golang/appengine/pull/25go testgoogle.golang.org/appengine/aetestlocalhost

$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))
于 2016-09-27T15:34:50.187 回答
0

Don't know if something changed, but I was getting this error using the GCloud SDK bundled dev_appserver.py. (2019-02-03, MacOS Mojave/10.14, Google Cloud SDK 232.0.0) with Go 1.11.

With Go 1.11, binding explicitly to localhost helps:

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())

EDIT: But, while this prevented the "deny/allow" popup on the initial start, it didn't help on automatic restarts unless I didn't explicitly declare handlers in the app.yaml file. Clearly, there's more going on under the hood.

However, with "bare" app.yaml files, it worked as desired for me.

于 2019-02-03T19:06:46.240 回答