如何在Google App Engine上设置登台环境

sys*_*out 55 python deployment google-app-engine staging

正确配置开发服务器和生产服务器之后,我想在Google App Engine上设置一个临时环境,可以在将新版本部署到生产环境之前对其进行实时测试.

我知道两种不同的方法:

:第一个选项是修改app.yaml 版本参数.

version: app-staging
Run Code Online (Sandbox Code Playgroud)

我不喜欢这种方法的是生产数据受到我的临时测试的污染,因为(如果我错了,请纠正我):

  1. 暂存版本和生产版本共享相同的数据存储
  2. 暂存版本和生产版本共享相同的日志

关于第一点,我不知道是否可以使用新的命名空间python API "修复"它.

B.第二个选项是修改app.yaml 应用程序参数

application: foonamestaging
Run Code Online (Sandbox Code Playgroud)

通过这种方法,我将创建一个完全独立于Production版本的第二个应用程序.
我看到的唯一缺点是我被迫配置第二个应用程序(管理员设置).
使用像Gaebar这样的备份\还原工具,此解决方案也可以正常运行.

您使用什么样的方法为Web应用程序设置临时环境?
另外,在部署之前,您是否有任何自动脚本来更改yaml?

Zyg*_*tas 17

如果需要单独的数据存储区,选项B对我来说看起来更清晰,因为:

  1. 您可以保留版本功能以实现生产应用程序的真实版本.
  2. 您可以保留版本功能以进行流量分割.
  3. 您可以保留名称空间功能以实现多租户.
  4. 您可以轻松地将实体从一个应用程序复制到另一个 命名空间之间并不容易.
  5. 很少有API仍然不支持名称空间.
  6. 对于拥有多个开发人员的团队,您可以为单个人授予上传到生产权限.

  • +1为6.例如,我为我的个人凭据保存身份验证,可以部署到开发人员,我必须每次都输入真实帐户和密码. (3认同)

ben*_*xen 13

我在我的设置中选择了第二个选项,因为它是最快的解决方案,并且我没有制作任何脚本来更改部署中的应用程序参数.

但是我现在看到它的方式,选项A是一个更清洁的解决方案.您可以使用几个代码行根据版本切换数据存储区命名空间,您可以从环境变量CURRENT_VERSION_ID动态获取该文件,如下所示:http://code.google.com/appengine/docs/python/runtime.html #The_Environment


Mak*_*zik 5

我们选择了B.我认为它总体上更好,因为它完全隔离了项目.因此,例如,使用登台服务器上的某些配置不会影响并且不会危及安全性或导致生产环境中的任何其他蝴蝶效应.

对于部署脚本,您可以在app.yaml中拥有所需的任何应用程序名称.一些虚拟/开发名称,当您部署时,只需使用一个-A参数:

appcfg.py -A your-app-name update .
Run Code Online (Sandbox Code Playgroud)

这将极大地简化您的部署脚本,无需在app.yaml中进行字符串替换或任何类似操作