是否有一种简单的方法可以在AppEngine中获取当前的服务应用程序版本?
答案 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
变量来获取当前应用版本:
os.environ['GAE_VERSION']
:仅名称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请求的端口。