【问题标题】:How to tell which version of Google App Engine is running如何判断正在运行的 Google App Engine 版本
【发布时间】:2017-12-06 04:32:09
【问题描述】:

在 Google App Engine app.yaml 文件中,您指定 a version property(尽管当前首选项而不是 app.yaml:“...改为使用 command-line flag (--version) 来指定您的版本 ID”)。

就我而言,我将它用于不同的环境。 (见底部注释)如 app.yaml 中所述,唯一的版本值会产生唯一的 URL:

注意:版本名称应以字母开头,以将它们与始终由数字指定的数字实例区分开来。这避免了 URL 像 123.my-service.appspot.com...

的歧义

我使用两个版本,第一个作为我的“QA 环境”,第二个作为我的“生产环境”:

  • 开发
  • 1

我希望我的代码设置一个变量is_prod,并且我希望该值是布尔值True如果版本值等于'dev'。我该怎么做?

*注意,正如@Dan Cornilescu 在 cmets 中所说,使用环境版本可能不是一个好主意,例如 thisthis 之类的帖子

【问题讨论】:

  • 旁注:使用版本控制来实现环境是有问题的,请参阅stackoverflow.com/questions/40192557/…。推荐使用服务或整个应用程序,请参阅stackoverflow.com/questions/43218971/…
  • 我认为将其纳入我的问题本身是一个很好的警告。谢谢你。您能否举例说明为什么/如何/应该使用版本控制(如果不是环境?)
  • 不是真的 - 我不会使用版本控制来实现环境开始;)主要是因为我会失去(或至少变得非常困难)对环境和应用程序代码本身进行版本控制: 某个版本字符串代表一个环境(如果是,该环境的哪个版本?)或某个版本的应用程序代码?
  • 我个人更喜欢单独的应用程序来实现环境以确保数据存储隔离 - 我不希望行为不端的环境污染或可能破坏另一个环境的数据,尤其是生产环境:stackoverflow.com/questions/43118879/…
  • 该版本的最初目标是对应用程序部署进行版本控制。但是为此,您必须明确更改版本,因此它实际上取决于您想用它做什么。版本控制的重要用途是在将实时流量切换到新版本之前进行测试,traffic splitting 用于实时 A-B 测试,traffic merging 用于无中断应用升级

标签: python google-app-engine


【解决方案1】:

google.appengine.api.modules.modules module 似乎有我想要的方法。它会生成一个字符串,即使值是我的app.yaml 的整数(Google 称之为“数字实例”):

from google.appengine.api.modules  import modules

# Adjust for your different versions, these string values are based on my setup in the OP
is_prod = modules.get_current_version_name()=='1'
is_dev= modules.get_current_version_name()=='dev'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多