5 回答
TA贡献1853条经验 获得超6个赞
稳妥的做法,先在测试环境预演方案,完善方案细节,制定成可以遵循的文档。
再定个时间(可能访问量少的时候),按照文档,在线上环境进行操作。
线上操作的时候,稳妥的做法,也是推荐准备多个机器,比如现在的线上web-server 有 A/B/C 三台机器,那么你先把流量都导到BC上,然后在A完全没有处理请求后,再对A进行Python解释器的升级。成功之后,再以此类推到其他机器。
预演方案大概也是如下步骤:
* 先在测试环境编译Python3.6源码。
* 将Python3.5启动的服务,改为Python3.6启动。
* 测试(请尽可能详细),如果发现完全没问题,那么说明该操作可以在线上环境同样操作。
将预演方案应用于线上环境。尽可能在访问量少的时候操作升级。尽可能考虑最严重的后果,考虑是否需要有灾难处理的方法。
TA贡献1871条经验 获得超13个赞
3.6正式版已经在12月23日发布了,所以现在升级3.6应该是没有问题的;
自行阅读下python3.6的升级公告,就可以知道有哪些东西不兼容3.5了;
推荐开发使用Python ide工具,比如pycharm,这样在开发过程中,当你使用的语法,或者包在下一个版本会不兼容,或者不推荐的时候,会自动提示,比如你用Python2写如下语句:
print "Test!"
就会提示说该print会在python3中不兼容
========啰嗦分割线==========
1.生产环境,Python的项目一定要自行编译python版本,并使用virtualenv工具制作虚拟环境,这样做的好处有很多:
版本切换很快,只要source下相应的版本就已经切换版本了;
各个项目中的包依赖不会冲突,每个虚拟环境中的包都可以按照需求安装相应的包版本,不会存在冲突;
更符合12规范
2.我很喜欢新的东西,当然是正式版的东西,一个新版本的出现必然有他的价值存在,不能因为一点不兼容就直接一刀砍,我现在这个公司,以前使用的django还是1.6版本的,现在是1.10,我来到这个公司第一件事情就是升级django,然后慢慢找不兼容(使用ide很容易将不兼容找出来)
添加回答
举报