我目前有一个包含2个项目的App Engine Go应用:myapp-prod
和myapp-staging
。
我希望能够根据应用程序在prod或staging中运行来设置某些变量的值。
应用程序是否有办法检测它正在运行的环境?
由于
答案 0 :(得分:2)
您可以使用appengine.AppID()
函数获取应用程序的名称/ ID:
// AppID returns the application ID for the current application.
// The string will be a plain application ID (e.g. "appid"), with a
// domain prefix for custom domain deployments (e.g. "example.com:appid").
func AppID(c Context) string
您可以使用appengine.IsDevAppServer()
来判断您的应用是在运行模式下运行(使用AppEngine SDK)还是实时运行(在生产环境中):
// IsDevAppServer reports whether the App Engine app is running in the
// development App Server.
func IsDevAppServer() bool
或者您也可以使用包含上述两种信息的appengine.ServerSoftware()
,合并为一个字符串:
// ServerSoftware returns the App Engine release version.
// In production, it looks like "Google App Engine/X.Y.Z".
// In the development appserver, it looks like "Development/X.Y".
func ServerSoftware() string
答案 1 :(得分:1)
使用environment variable描述您的应用是处于制作还是暂存状态。添加到app.yml
,
env_variables:
ENVIRONMENT: 'production'
在您的代码中,
import "os"
if v := os.Getenv("ENVIRONMENT"); v == "production" {
// You're in production
}