“ gcloud应用程序部署”,部署了错误的版本

时间:2019-01-24 14:54:56

标签: python google-app-engine google-cloud-platform

编辑:我从.pyc个文件中发现了问题。由于某种原因,某些编译器已创建包含旧代码的.pyc文件。当我将文件上传到服务器时,服务器将不会编译.py个文件。相反,它将运行从我的计算机上传的.pyc个文件。我删除了所有.pyc个文件,已部署,现在服务器运行新代码 / EDIT

运行gcloud app deploy时,我经常会部署错误版本的应用程序。我的应用程序在GAE标准环境上运行,是使用Python 2.7编写的。

我可以通过让我的一个网址返回一个硬编码的字符串(例如"test1")来轻松重现该问题。现在,当我在部署之间进行更改时,我经常会从端点收到以前编写的字符串。

在本地服务器上运行应用程序时,更改后的返回字符串正确,但是在部署之后,该字符串可以来自早期版本。

我必须将我的应用程序部署到测试和生产环境中,我担心部署错误的代码。正确部署gcloud控制台时,显示只有2个文件正在上传(如果我仅编辑了静态返回字符串)。

我尝试从App Engine控制台中删除所有其他版本。

也尝试使用标志--stop-previous-version

我还尝试添加新的端点,并且在gcloud说成功部署之后,仍然无法访问这些端点。

如何确保当前代码正确部署?

2 个答案:

答案 0 :(得分:1)

1)确保更改app.yaml中的版本号

2)转到

https://console.cloud.google.com/appengine/versions?project= {您的项目ID}

告诉GCP服务哪个版本,停止哪个版本。

答案 1 :(得分:0)

关于pyc文件的注释表明您可能已自定义app.yamlskip_files部分,并在此过程中意外擦除了其默认值,这通常会阻止部署{{ 1}}(以及其他可能干扰文件)到GAE。从那个文档(重点是我的):

  

skip_files 具有以下默认值:

pyc
     

默认模式不包括格式为Emacs的备份文件   skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$ 和...〜,#...#.pyc文件,.pyo修订控制目录中的文件以及名称以a开头的Unix隐藏文件   点(。)。

     

要扩展上述正则表达式列表,请复制并粘贴以上内容   列出到您的RCS 中,并添加自己的正则表达式。

因此,不必再担心手动清理app.yaml文件,请确保您在.pyc部分中仍然具有上述模式,尤其是skip_files这是负责{ {1}}个文件。