一尘不染

如何在Google AppEngine上区分本地部署和实时部署

go

我想设置全局变量,例如:

var DEBUG_MODE bool

func init() {
  // set DEBUG_MODE true if localhost (not appspot.com or other domain)
}

这该怎么做?


阅读 275

收藏
2020-07-02

共1个答案

一尘不染

最简单的方法是使用appengine.IsDevAppServer()来告诉您的应用程序是在开发模式下运行(使用AppEngine
SDK)还是在现场(正在生产中)运行:

func IsDevAppServer() bool

IsDevAppServer报告App Engine应用程序是否在开发App Server中运行。

另外,您也可以使用appengine.ServerSoftware()其中包含此信息以及您的App版本的信息,并合并为一个字符串:

func ServerSoftware() string

ServerSoftware返回App Engine发行版本。在生产中,它看起来像“ Google App Engine /
XYZ”。在开发应用程序服务器中,它看起来像“ Development / XY”。

因此,例如,您想做什么:

var DEBUG_MODE bool

func init() {
    DEBUG_MODE = appengine.IsDevAppServer()
}

或一行:

var DEBUG_MODE = appengine.IsDevAppServer()

尽管请注意,appengine.IsDevAppServer()只要您可以参考,就可以打电话DEBUG_MODE。同样,该名称DEBUG_MODE不符合Go命名约定,应该是DebugMode是否需要导出(因为您也想从其他包中访问它),或者应该是debugMode不需要导出的名称。

2020-07-02