在app.yaml上指定的环境变量,但未在main.go上获取

在app.yaml上指定的环境变量,但未在main.go上获取,第1张

在app.yaml上指定的环境变量,但未在main.go上获取

它在官方文档中没有记录:定义环境变量,但是在调用函数

app.yaml
之前不会设置生产环境中定义的环境变量
init()
。仅在处理第一个请求之前设置它们。

在此报告了此问题。引用AppEngine工程师的答案:

对。由于实现的性质,不幸的是,环境变量在init函数中不可用。尽管它们不与请求绑定,但是直到所有init函数都已运行之后才设置它们,而是在处理第一个请求之前设置它们。

结果,您可以在主处理程序中使用sync.DoOnce来执行基于环境变量的值所需的任何 *** 作,因为此时将正确设置该变量。

通过以下示例实现此目的

Once.Do()

var once = sync.Once{}func MainHandler(w http.ResponseWriter, r *http.Request) {    once.Do(mysetup)    // do your regular stuff here}func mysetup() {    // This function is executed only once. Read / use env vars here.    var1 := os.Getenv("ENVIRONMENT_VAR1")    _ = var1 // use var1}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5476389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存