在 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 锁定?