【问题标题】:how to set environment variables on google appengine?如何在 google appengine 上设置环境变量?
【发布时间】:2015-03-21 17:55:05
【问题描述】:

我正在尝试在谷歌应用引擎上设置和使用环境变量。我的 app.yaml 文件如下所示。但是,当我使用 os.Getenv("mytoken") 时,我得到一个空字符串,而不是我设置的实际值。是 GAE 的错误吗?

api_version: go1
handlers:
- url: /.*
  script: _go_app
env_variables:
  mytoken: '88786d9b9a0359824'

【问题讨论】:

    标签: google-app-engine go


    【解决方案1】:

    该功能现已记录在 here但是,正如我刚才测试的那样,它在 AppEngine 上不起作用。它确实可以在本地服务器上运行,所以不要上当。.

    编辑:它适用于 Google AppEngine。我以前的失败是由于一个错误。考虑一下:

    import "os"
    
    var consumer = OAuth1Consumer{
        secret: os.Getenv("secret")
    }
    

    如果声明为全局变量,则不起作用。

    【讨论】:

    • 你能澄清一下“如果你声明为全局变量它不起作用”的意思吗?您的示例 consumer 变量是包全局的,因此不清楚您的意思。
    • @DaveC 我不确定出了什么问题,我是 Go 新手。问题是,如果我像示例代码一样将变量声明为全局包,它在 AppEngine 上不起作用(但它在本地开发服务器上起作用)。但是,如果我将 os.Getenv 移动到某个函数中,它就可以工作。我不知道内部。
    • 基于下面提供的链接@markdoyle (code.google.com/p/googleappengine/issues/detail?id=12006),环境变量在所有初始化函数都运行之前还没有准备好,我会说同样的可能也适用于全局变量声明。它可以从一个函数中工作,因为到那时环境变量已经设置好了。
    【解决方案2】:

    【讨论】:

    • 似乎这是问题所在:code.google.com/p/googleappengine/issues/detail?id=12006 虽然目前它只适用于开发服务器而不是生产服务器。
    • @MarkDoyle +1 获取链接
    • 是的,新功能在讨论后仅仅 3 个月就实现了,这真是太好了(而且它似乎确实在生产中工作......但只是在请求的上下文中,在 init 函数之后完成 - 大致按照下一个问题的讨论......嗯,总比没有好!-)。
    【解决方案3】:

    我在任何地方都找不到该字段的文档。我只在 python 配置中看到它,而不是在 Go 配置中看到它。如果您基于 python 文档here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-28
      • 2021-06-12
      • 2018-03-31
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      • 2012-02-24
      • 2013-01-11
      相关资源
      最近更新 更多