如何使用Google app Engine Python将变量从app.yaml传递到main.py

如何使用Google app Engine Python将变量从app.yaml传递到main.py,python,google-app-engine,Python,Google App Engine,我正在尝试从app.yaml向main.py传递一些配置变量。我无法从代码中找到访问app.yaml的语法 例如,您希望用户将其客户端号码放入app.yaml中,并从main.py访问该号码以传递到main.html。虽然在main.py中创建一个变量来传递它是很容易的,但它似乎更适合放在app.yaml中 例如: app.yaml application: xyz version: 1 runtime: python27 ... clientID: (I

我正在尝试从app.yaml向main.py传递一些配置变量。我无法从代码中找到访问app.yaml的语法

例如,您希望用户将其客户端号码放入app.yaml中,并从main.py访问该号码以传递到main.html。虽然在main.py中创建一个变量来传递它是很容易的,但它似乎更适合放在app.yaml中

例如:

app.yaml

    application: xyz
    version: 1
    runtime: python27
    ...
    clientID: (ID here)
main.py

    myID = appYAML.clientID
    ...
    values = {'xyz': blah.blah, 'myID': myID }
main.html

    ...
    <script>
      ...
      {% ifequal myID %}
        my_client = {{myID}}
      ...
    </script>
。。。
...
{%ifequal myID%}
我的客户={{myID}
...

这是不受支持的,您应该将特定于应用程序的设置放入自己的YAML文件中。

在1.6.5版本中,App Engine支持此[1]:

- In your app.yaml file, you can include an env_variables stanza that will set
  the given environment variables in your application's runtime.

有关如何使用此功能的信息,请访问:。

您可以在app.yaml中定义变量,使其可用于程序的os.environ字典:

env_variables:
  variable_name: '<YOUR VALUE>'

文档:

奇怪的是,这可以用Java实现:我看不出有任何理由不在app.yaml中实现。有时,人们可能希望分离出一个单独的配置文件,但对于1或2个字段来说,这真的没有意义。无论如何,我甚至还没有看到一种在不同的YAML文件中访问变量的方法。你有吗?@MarkFinch:你需要读取不同的YAML文件并在其上使用YAML解析器,除非你;我们不知何故使用了一个自动完成这项工作的框架(这似乎不太可能)。使用app.yaml的问题是app.yaml没有作为应用程序文件上载到服务器,因此您无法从应用程序中手动读取和解析它。这非常有用,我将在1.6.5发布后等待并处理我的应用程序的这一部分。感谢关于如何使用它的信息可在以下站点获得:这对于设置变量非常有用,但是作为一个noob,您如何检索和使用它们?@suataanphd:为什么您要尝试将字符串env var(如
'myapp.settings'
转换为int?或者你的意思是让
DJANGO\u SETTINGS\u MODULE=os.environ['DJANGO\u SETTINGS\u MODULE']
?@AdamChristianson在这个带有Python应用程序的旧存储库中就是一个例子,下面是使用的直接代码,请尝试克隆它并使用该项目,以了解它是如何工作的
import os
CUSTOM_SETTINGS = os.environ['variable_name']