【问题标题】:How should I specify the app id?我应该如何指定应用程序 ID?
【发布时间】:2015-10-15 11:35:40
【问题描述】:

我有一个在 Google App Engine 中运行的应用程序。

最初可以使用以下方式运行应用程序:

dev_appserver.py app.yaml

其中app.yaml 包含字段application,该字段将用于使用google.appengine.api.app_identity.get_application_id() 检索项目ID。

后来dev_appserver.py 命令被删除,应用程序可以使用:

gcloud preview app run app.yaml

运行此程序会导致警告,在 app.yaml 中指定 application 已被弃用。

现在app run 已被弃用,取而代之的是现在恢复的dev_appserver.py。这是否意味着我也应该恢复app.yaml 中的application 字段?

如果我运行 gcloud config list,它仍然会显示正确的项目 ID,但如果未设置 application,则调用 google.appengine.api.app_identity.get_application_id() 会返回 None

【问题讨论】:

  • 调用 google.appengine.api.app_identity.get_application_id() 返回 None 是否在 app.yaml 中指定 application?如果我没有指定它,它会返回None,但如果我这样做,它会按预期返回名称(顺便说一句)
  • 我更新了问题来回答你的评论
  • 您可以用dev_appserver.py 指定-A <APP_ID> - 这有帮助吗?不过,欢迎谷歌对推荐做法进行澄清。对开发工具的所有更改使这非常令人困惑(appcfgdev_appservergcloudmvn:appenginemvn:gcloud...)

标签: python python-2.7 google-app-engine


【解决方案1】:

.yaml 配置文件中的application 属性得到很好的支持,实际上它是 存在于Modules documentation 中的所有模块配置文件示例中。

使用application 属性指定应用程序名称可以说比对某些/所有相关实用程序使用强制的-A <APP_ID 命令行参数更不容易出错。

尝试上传带有注释掉的application 字段的模块配置文件显示:

appcfg.py: error: Expected -A app_id when application property in file main.yaml is not set.

我将其解释为建议在模块的 .yaml 文件中使用 application 属性将是默认/首选方法。

FWIW,application 属性也适用于其他配置文件 - 当我在我的多模块应用程序中添加 dispatch.yaml 路由时遇到了一些麻烦,通过将 application 属性添加到 dispatch.yaml 来解决文件。我不记得具体的细节了。

【讨论】:

  • 我知道在app.yaml 中指定application 是可能且方便的,但我希望看到官方声明不赞成这样做。还要感谢您说application 也适用于其他配置文件。我不知道这一点,发现这非常有用。
  • 此时gcloud preview app 仍是测试版:cloud.google.com/sdk/gcloud-app#Deploying_app。弃用消息可能只是一个疏忽。我不会太担心,特别是因为已建立/已发布的 GAE 工具(dev_appserver.pyappcfg.py)没有提及任何此类弃用。
【解决方案2】:

更新:app.yaml reference 现在表示application 属性已弃用,您应该使用dev_appserver.py-A 选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多