在 App Engine (Python) 运行时检索 YAML 参数

Posted

技术标签:

【中文标题】在 App Engine (Python) 运行时检索 YAML 参数【英文标题】:Retrieving YAML parameters during runtime in App Engine (Python) 【发布时间】:2011-04-20 09:43:50 【问题描述】:

是否可以在运行时以编程方式检索任何 YAML 参数?它们是否存储在环境中的某个地方?

很好的例子是自动查找应用程序版本并将其作为评论添加到登陆 html 页面中。

【问题讨论】:

【参考方案1】:

在PyYAML中,yaml文件夹中的__init__.py文件有一个全局变量__version__,所以

#import yaml
print yaml.__version__

【讨论】:

【参考方案2】:

否,但某些数据可从 os.environ 获得 - 例如,os.environ['APPLICATION_ID']os.environ['CURRENT_VERSION_ID']

【讨论】:

有效。谢谢!那么,版本 ID 中的最后一个 1 是 API 版本,是吗? (即)我尝试了 os.environ['CURRENT_VERSION_ID'] 并得到了 .1 CURRENT_VERSION_ID 的格式为“major.minor”。 'major' 是你在 app.yaml 中设置的版本名称; 'minor' 是系统生成的 ID。在 dev_appserver 上,minor 始终为 1,而在生产中,它会因版本而异。【参考方案3】:

否(CGI 和 WSGI 标准要求的环境设置除外)。如果您需要在代码中使用app.yaml 的全部内容,那么我建议保留app.yaml 的副本(例如,在同一目录中作为my.yaml),然后做

import yaml

...

data = yaml.load(open('my.yaml', 'rb'))

获取所需的字典data

【讨论】:

您可以指定 app.yaml 也应与应用一起上传。也许您可以调整 skip_files 以便上传。见code.google.com/appengine/docs/python/config/…。 @Robert,好主意,+1 -- 这样你就可以避免 my.yaml 复制(不过,你仍然需要 yaml.load(open('app.yaml', 'rb')),就像在我的 A 中一样。

以上是关于在 App Engine (Python) 运行时检索 YAML 参数的主要内容,如果未能解决你的问题,请参考以下文章

从 App Engine 运行时 Python 3.7 调用 Cloud Function [重复]

在 Google App Engine 上按计划运行 python 脚本

在 Google App Engine 上运行 Python37 的问题

如何管理 App Engine Go 运行时上下文以避免 App Engine 锁定?

首次使用Google App Engine使用Python创建留言板

运行一个 Google App Engine 实例,前端在 nodejs 中,后端服务器在 python 中