AppEngine:获取当前的服务应用程序版本

时间:2010-10-16 12:20:56

标签: google-app-engine

是否有一种简单的方法可以在AppEngine中获取当前的服务应用程序版本?

8 个答案:

答案 0 :(得分:38)

os.environ['CURRENT_VERSION_ID']

答案 1 :(得分:17)

String version = SystemProperty.version.get();
String applicationVersion = SystemProperty.applicationVersion.get();

这是语法:

public static final SystemProperty applicationVersion

当前运行的应用程序版本的主要版本号加上部署它的时间戳。密钥是“com.google.appengine.application.version”。

请参阅here

PS。一个难题仍然存在。版本旁边的时间戳是什么意思以及如何阅读它?

编辑:这是神秘的关键。

 Date UploadDate = new Date(Long.parseLong(
   applicationVersion.substring(applicationVersion.lastIndexOf(‌​".")+1))
   / (2 << 27) * 1000);

答案 2 :(得分:9)

对于Python(GAE SDK版本:“1.4.2”)

version_id = self.request.environ["CURRENT_VERSION_ID"].split('.')[1]

timestamp = long(version_id) / pow(2,28) 

version = datetime.datetime.fromtimestamp(timestamp).strftime("%d/%m/%y %X")

请参阅http://groups.google.com/group/google-appengine-python/browse_thread/thread/f86010e7cf3c71b4

答案 3 :(得分:9)

from google.appengine.api import modules
modules.get_current_version_name()

来源:https://cloud.google.com/appengine/docs/python/modules/functions

答案 4 :(得分:1)

根据我今天的实验,您可以使用两个 os.environ 变量来获取当前应用版本:

  1. os.environ['GAE_VERSION']:仅名称
  2. os.environ['CURRENT_VERSION_ID']:由{version name}.{deployment id}组成的唯一版本标识符,相当于os.environ['GAE_VERSION'] + '.' + os.environ['GAE_DEPLOYMENT_ID']

看来所谓的“部署 ID”可以右移 28 位以在纪元秒内获得时间戳(正如其他答案已经描述的那样)。

例如:我在 2021-03-04T00:17:12Z 部署了应用的“101”版本,我看到以下值: >

  • os.environ['GAE_VERSION']'101'
  • os.environ['CURRENT_VERSION_ID']'101.433474146608888597'
  • os.environ['GAE_DEPLOYMENT_ID']'433474146608888597'

您可以使用以下代码从 os.environ['CURRENT_VERSION_ID'] 获取版本名称和时间戳:

>>> import os
>>> import datetime
>>> version_id = os.environ['CURRENT_VERSION_ID']  # example: '101.433474146608888597'
>>> name, ts = version_id.split('.')
>>> dt = datetime.datetime.utcfromtimestamp(int(ts) >> 28))
>>> dt.isoformat()
'2021-03-04T00:17:12'

免责声明:此功能的大部分未记录在案,部署 ID 格式可能为 subject to change

答案 5 :(得分:0)

您还可以访问流程的环境变量:

  

GAE_VERSION

使用标记--version进行部署(gcloud应用程序部署)时可用

答案 6 :(得分:0)

对于nodejs,我不确定是否已记录。

process.env.GAE_VERSION

答案 7 :(得分:0)

对于那些想要更新的人,从2020年9月开始为GAE实例设置环境变量:

GAE_VERSION似乎可以回答原始问题。

Google文档:

https://cloud.google.com/appengine/docs/standard/python3/runtime#environment_variables

以下环境变量由运行时设置:

环境变量说明 GAE_APPLICATION您的App Engine应用程序的ID。对于在欧洲部署的应用程序,此ID的前缀是“区域代码〜”,例如“ e〜”。

GAE_DEPLOYMENT_ID当前部署的ID。

GAE_ENV App Engine环境。设置为标准。

GAE_INSTANCE当前正在运行您的服务的实例的ID。

GAE_MEMORY_MB应用程序进程可用的内存量,以MB为单位。

GAE_RUNTIME在app.yaml文件中指定的运行时。

GAE_SERVICE在您的app.yaml文件中指定的服务名称。如果未指定服务名称,则将其设置为默认名称。

GAE_VERSION您服务的当前版本标签。

GOOGLE_CLOUD_PROJECT与您的应用程序关联的Cloud项目ID。

PORT接收HTTP请求的端口。