1、django+python27+mysql的生产环境,想换成python3,请问需要哪些注意事项?生产环境数据不想被破坏,所以不敢轻易下手,希望大神指点一下?
关于python升级:
可以使用Python3自带工具2to3,将python2的代码转换为python3。少部分代码仍需手工转换。
升级python版本后,第三方包的版本需要升级。有的第三方包不支持python3。这个时候可以尝试使用2to3工具对第三包的python源代码进行转换,然后使用。这样存在一定风险。无法转换的,需要寻找替代包,应用服务器上对应的代码需要修改。
关于django升级:
django1.5开始支持python3。同时django1.11是支持python2的最后的版本。如果使用的django版本大于等于1.5,则django版本可以不升级。如果django版本低于1.5,则需要升级django版本。升级django版本后,新版本不兼容的老的API都需要修改。这个工作量比较大。
升级django版本后,为django服务的第三方包需要对应升级。建议django不要立即使用最新版本,以免第三方包还不支持最新的django版本。
关于mysql:
mysqldb不支持python3,需要使用mysqlclient做数据库API驱动。
django2.0只支持myslq5.5或者更高版本
一般性的版本升级注意事项。
代码和数据做好备份
python和django升级后,上线前需要充分测试。
点击添加图片描述(最多60个字)
2、刚学习django的nginx部署,一直不清楚处理高并发的原理,大神可以解释下么?
我简单说一下我的理解。
djangoWSGI是单线程的,就是说一个请求处理完了才能响应另一个请求。
uWSGI(C语言书写)+Django相比与单独使用Django,通过多进程,发挥多核的优势,支持的并发量更高。
thewebclient-thewebserver-thesocket-uwsgi-Django
uwsgi服务器运行在django一侧。
uWSGI(C语言书写)+Django相比与单独使用Django,使用多进程,发挥多核的优势,支持的并发量更高。uWSGI中有master和worker进程。master进程根据配置创建相应数目的worker进程。一个worker进程被创建后,它会运行一个python解释器实例,然后在worker进程被销毁前一直使用。master将收到的