python - App Engine 继续提供以前的 Python 版本
问题描述
最近(一年内)似乎当我将更新部署到App Engine应用程序时,它会继续提供以前的 Python 代码。
我可以去控制台和下面:
版本 -> 调试 -> 源
看到最新版本已部署。当它出错时,日志中给出的链接指向新的源,但根据明确的结果,它实际上是旧的源。这已经在多个应用程序上发生,唯一的解决方案是等待一天再试一次。
我用来从本地 Windows 开发环境部署的命令是:
gcloud app deploy --project xxxxxxxxxx --version 1
我试过修改版本号,但结果是一样的。
我会错过什么?
进一步尝试:我将部署命令更改为:
gcloud app deploy --project xxxxxxxx --promote --stop-previous-version
我删除了版本开关,以便 App Engine 可以创建自己的版本编号。结果是一样的:以前的版本继续服务。
只是为了验证,我添加了一个日志记录行:
logging.info('Last edit: 5/28/2018 11:08')
client_id = os.environ['CLIENT_ID']
logging.info('CLIENT_ID = ' + str(client_id))
添加了第一行,其他两行是旧的。在日志跟踪中,它显示第二个日志的输出,而不是第一个。真正奇怪的是日志中的行号表示中间行,所以它显示的是新源,但执行的是旧的。
解决方案
我正在使用适用于 Python 的原始 App Engine SDK。显然,您必须在本地运行才能生成 .pyc 文件。它在本地工作,但在网络上遇到问题。所以我做了一些调整来解决这个问题,但后来没有尝试在本地运行。因此,虽然上传的 .py 是新的,但 .pyc 是旧的。
推荐阅读
- node.js - 通过 nodejs 中的 stdin/stdout 流式传输 uint8
- python - Pandas 对行进行迭代以进行特征计算
- javascript - 如何在 beta 中禁用strapi 管理仪表板?
- javascript - 如何通过特征将对象从一个数组移动到另一个数组?
- python - 为什么我在尝试使用 sshtunnel 连接到 MYSQL DB 时收到此错误 - 没有名为 STRINGIO 的模块
- c++ - Xcode:预期的不合格 ID
- c++ - 如何获得 Sigma NcR mod 1000000007
- admob - 更改 AdMob 基准国家/地区
- r - 理解为什么 sapply 在 R 中返回更长长度的向量
- sql - 使用动态 SQL 在一个参数中执行多列通配符搜索