【问题标题】:why does os.Getenv("SERVER_SOFTWARE") returns blank string for me?为什么 os.Getenv("SERVER_SOFTWARE") 为我返回空白字符串?
【发布时间】:2013-05-31 16:48:24
【问题描述】:

我最近升级到最新版本的 Go SDK (1.8.0),现在当我调用 os.Getenv("SERVER_SOFTWARE") 时,我得到一个空白字符串。我正在使用它来确定我是在本地开发服务器上还是在实时环境中,并且我不知道有任何其他检查方式。所以任何一个问题的答案都适合我:1)为什么现在返回一个空白字符串?或 2) 是否有其他方法可以检查我是否在开发服务器上?

【问题讨论】:

  • 本地开发服务器和直播环境是否都返回空字符串?
  • 是的,这里是我在现场站点上的所有环境变量:"TZ=UTC";"PWD=/base/data/home/apps/s~[MY_APP_ID]/[MY_APP_VERSION ]";在 peterSO 对我的开发站点变量的回答中查看我的 cmets。

标签: google-app-engine go


【解决方案1】:

使用os.Environ 函数查看为开发服务器设置了哪些环境变量。看看它们中的任何一个是区分开发服务器和生产服务器的候选者。例如,APPLICATION_ID 环境变量。

The Go Development Server

Accessing Application IDs in the Development Web Server

开发服务器模拟生产 App Engine 服务。 它执行此操作的一种方法是将字符串 (dev~) 添加到 APPLICATION_ID 环境变量。

【讨论】:

  • 谢谢,peterSO,我觉得我离我越来越近了,我可能会使用我在 os.Environ() 函数中找到的东西来做到这一点......但没有一个通常的嫌疑人出现了,我对使用它们中的任何一个都不完全满意。当我输出其中的所有内容时,我得到以下信息: "GOROOT=C:\Program Files\Google\google_appengine\goroot";"SYSTEMROOT=C:\windows";"PWD=C:\PATH_TO_MY_APP";"TZ= UTC";
  • 我想我可以使用 PWD 变量,但这对我来说就像是一种创可贴的修复,如果我将来让任何其他开发人员从事这方面的工作,那就不会了工作。就像我说的那样,没有一个常见的嫌疑犯,比如 APPLICATION_ID 或 SERVER_SOFTWARE。有没有办法可以添加它们?启动开发服务器时是否缺少一些标准命令行选项(我现在使用的是:dev_appserver.py "C:\PATH_TO_MY_APP")?
【解决方案2】:

所以...我最近找到了很多“嘿,我很笨,有更好的方法”来回答我的问题。这似乎是其中之一。因此,如果我后退一步,并解决我试图回答的真正问题,一切都会变得简单得多。我只是想有一种方法来确定我是在开发服务器上还是在实时服务器上。我正在研究一个完全不相关的问题,发现了这个:appengine.IsDevAppServer()。它有完整的记录:https://developers.google.com/appengine/docs/go/reference#IsDevAppServer,直到现在我才看到它。

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2016-11-23
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多