应用流量拆分时,Task Queue默认指向哪个应用版本?
流量拆分下Task Queue的DEFAULT_APP_VERSION取值说明
先说结论:当你同时把Python 2和Python 3版本都设为“默认”时,DEFAULT_APP_VERSION的实际指向,取决于平台的版本优先级规则:
- 多数PaaS平台(比如App Engine)会把最后部署的那个默认版本设为实际生效的默认版本,之前的默认标记会被覆盖。
- 要是你用的框架支持配置文件指定,比如
app.yaml里的version和default配置,DEFAULT_APP_VERSION会直接读取你配置中明确指定的主默认版本值。
怎么验证实际取值?
- 直接看平台的版本管理后台:找标记为“默认”的版本,一般平台会高亮显示当前真正生效的那个。
- 在代码里加个日志打印:在
taskqueue.py里插一行代码,输出这个值看看:
分别在两个版本的应用里跑一下,就能确认实际指向哪个版本了。import taskqueue print("当前DEFAULT_APP_VERSION:", taskqueue.DEFAULT_APP_VERSION) - 测一下任务执行:提交个测试任务,看它实际跑在Python 2还是3环境里,反过来就能推断
DEFAULT_APP_VERSION指向的版本。
建议的解决办法
- 别同时设多个默认版本:明确指定一个版本做主默认,另一个靠流量分配比例走,这样
DEFAULT_APP_VERSION的指向就不会乱。 - 要是暂时必须保留双默认状态,创建任务时手动指定目标版本:别依赖
DEFAULT_APP_VERSION,直接写死版本标识,比如:
这样任务肯定会跑到你指定的版本里,不会出问题。task = taskqueue.Task( url='/your-task-path', target='py3-prod' # 换成你的版本名称 ) task.add()
内容的提问来源于stack exchange,提问作者Nickolas Kraus
相关产品推荐
相关产品推荐

