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

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

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

【问题讨论】:

    标签: python google-app-engine runtime yaml


    【解决方案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 中一样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 2017-02-24
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 2020-05-12
      相关资源
      最近更新 更多