【问题标题】:"gcloud app deploy", deploys wrong version“gcloud app deploy”,部署错误的版本
【发布时间】:2019-01-24 14:54:56
【问题描述】:

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

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

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

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

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

我已尝试从 App Engine 控制台终止所有其他版本。

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

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

如何确保我当前的代码得到正确部署?

【问题讨论】:

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


    【解决方案1】:

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

    2) 转到

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

    告诉 GCP 提供哪个版本以及停止哪个版本。

    【讨论】:

    【解决方案2】:

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

    skip_files 具有以下默认值:

    skip_files:
    - ^(.*/)?#.*#$
    - ^(.*/)?.*~$
    - ^(.*/)?.*\.py[co]$
    - ^(.*/)?.*/RCS/.*$
    - ^(.*/)?\..*$
    

    默认模式不包括名称为 form 的 Emacs 备份文件 #...# 和 ...~、.pyc.pyo 文件、RCS 修订控制目录中的文件以及名称以 a 开头的 Unix 隐藏文件 点 (.)。

    要扩展上面的正则表达式列表,复制并粘贴上面的 列出到您的app.yaml 并添加您自己的正则表达式。

    因此,为了不再担心手动清理 .pyc 文件,请确保您的 skip_files 部分中仍有上述模式,尤其是负责 .pyc 文件的 - ^(.*/)?.*\.py[co]$

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 1970-01-01
      • 2017-07-16
      • 2017-04-10
      • 2020-12-29
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多