You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

App Engine部署Python应用更新后仍运行旧版本代码问题求助

解决App Engine部署后显示新源码但运行旧Python代码的问题

这种新旧代码“分裂”的情况真的很闹心——控制台明明显示最新版本已部署,日志行号也指向新源码,但实际跑的却是旧逻辑,试了各种部署命令都不管用,还得等一天?我帮你梳理几个容易忽略的关键点,说不定能快速解决:

1. 先确认:你部署的是接收流量的服务吗?

App Engine支持多服务(比如默认服务default和自定义服务),如果你的项目里有多个服务,很可能你部署到了一个没流量的服务上!

  • 用命令查看所有服务:
    gcloud app services list
    
  • 部署时明确指定目标服务(比如默认服务):
    gcloud app deploy --service default --promote --stop-previous-version
    
    避免误部署到其他闲置服务。

2. 旧实例没彻底终止,缓存拖后腿

即使加了--stop-previous-version,有时候旧实例可能因为正在处理请求没立刻停止,或者自动缩放的预热实例还在跑旧代码:

  • 直接去控制台的「实例」页面,手动终止所有旧版本的实例,强制让新实例接管流量。
  • Python运行时可能会缓存编译后的.pyc文件或依赖包,试试部署前清理本地的__pycache__文件夹,确保没有旧的缓存文件被一起上传。

3. 检查.gcloudignore——是不是修改的文件没传上去?

如果你的.gcloudignore文件不小心排除了修改的代码文件,部署时根本没把新代码传到App Engine!

  • 打开本地的.gcloudignore,确认你修改的Python文件(比如新增日志的那个文件)不在忽略列表里。
  • 用调试模式部署,查看上传的文件列表,确认新代码被上传:
    gcloud app deploy --verbosity debug
    

4. 控制台源码和运行时不同步?确认版本哈希

控制台的Debug Source显示新代码,但实际运行的版本可能不是你刚部署的:

  • 用命令查看版本的详细信息,对比代码哈希和部署时间:
    gcloud app versions describe [你的新版本ID]
    
    确认哈希和本地代码的哈希一致,说明部署的确实是最新代码。

5. 验证当前运行的版本到底是哪个

在代码里加一行打印版本ID的日志,确认实际运行的版本:

import os
logging.info(f"Running version: {os.environ.get('GAE_VERSION')}")

如果打印的版本ID不是你刚部署的,说明流量根本没切过来——去控制台的「版本」页面,手动把新版本的流量比例设为100%,旧版本设为0。

快速验证步骤

  1. 本地运行代码,确认新增的日志语句能正常打印,排除本地代码问题。
  2. 清理本地__pycache__,用调试模式重新部署,确认文件上传完整。
  3. 手动终止所有旧实例,强制切换流量到新版本。

这种问题大多是流量分配、实例缓存或者部署目标错误导致的,按上面的步骤排查,应该不用等一天就能解决!

内容的提问来源于stack exchange,提问作者Charles Libicki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:11:07