Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在开发AppEngine Go应用程序时防止OSX防火墙弹出_Macos_Google App Engine_Dev Appserver - Fatal编程技术网

Macos 在开发AppEngine Go应用程序时防止OSX防火墙弹出

Macos 在开发AppEngine Go应用程序时防止OSX防火墙弹出,macos,google-app-engine,dev-appserver,Macos,Google App Engine,Dev Appserver,我目前正在本地使用Go编程语言开发AppEngine应用程序。我的操作系统是MacOSX10.8.3 我在开发过程中保持AppEngine的开发服务器(dev_appserver.py)运行。每次我保存一个应用程序文件(服务器正在监视该文件的更改)时,OSX防火墙对话框就会弹出“是否允许应用程序接收传入连接?”。对话框仅在不到一秒钟的时间内可见,然后再次消失 我怎样才能让它不经常出现?我曾尝试在OS X防火墙中为“go”应用程序和简单的Python设置明确的规则,以接受或拒绝传入连接,但不管它(

我目前正在本地使用Go编程语言开发AppEngine应用程序。我的操作系统是MacOSX10.8.3

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


我怎样才能让它不经常出现?我曾尝试在OS X防火墙中为“go”应用程序和简单的Python设置明确的规则,以接受或拒绝传入连接,但不管它(短暂)弹出什么。

与Google Group上的应用引擎人员交谈,显然这在最新版本的SDK(1.8.1)中得到了修复。为了解决这个问题,我需要修补两个文件,以强制所有测试服务器只在
localhost
上侦听。我提交了一个拉取请求,所以这可能会在上游得到修复:

$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)
}
致:

我还需要修补
$HOME/google cloud sdk/platform/google\u appengine/lib/portpicker/portpicker/\uuuu init\uuuuu.py
第79行:

sock.bind(('', port))
致:


不知道是否发生了变化,但我使用捆绑的GCloud SDK
dev_appserver.py
得到了这个错误。(2019-02-03,MacOS Mojave/10.14,谷歌云SDK 232.0.0)和Go 1.11

使用Go 1.11,显式绑定到
localhost
有助于:

host:=“”
如果os.Getenv(“节点_ENV”)=“开发”{
host=“localhost”
Printf(“仅为'%s'绑定到'localhost',用于环境目的)
}
srv:=&http.Server{
经办人:r,
地址:fmt.Sprintf(“%s:%s”,主机,端口),
写入时间:10*次。秒,
读取超时:10*次。秒,
}
log.Fatal(srv.ListenAndServe())
编辑:但是,虽然这阻止了在初始启动时弹出“拒绝/允许”窗口,但它对自动重新启动没有帮助,除非我没有在
app.yaml
文件中明确声明处理程序。很明显,引擎盖下还有更多的事情要做


然而,有了“裸”
app.yaml
文件,它就如我所希望的那样工作了。

我不知道苹果防火墙,但我真的可以向你推荐小飞贼,我没有任何问题,只要定义应用尝试做某事时的规则就行了。已确认,绑定到localhost会抑制该对话框。
sock.bind(('', port))
sock.bind(('localhost', port))