fcgi.py 从python2.x到3.x的移植
来源:互联网 发布:深圳国际学校知乎 编辑:程序博客网 时间:2024/05/18 00:24
python推出3.x版本已经有很长一段时间了,许多第三方模块却都还没有开始完全支持3.x版本。一直奇怪为什么第三方py模块的更新速度这么慢,今天我终于真正体会了一把。
出于对py标准化组织的信任,我决定以后做事情都用python3来搞,因此在做一个web框架时,考虑到从fastcgi+ngnix来搭建。但是 django使用的fcgi.py文件并不支持python3.x。没办法,决定自己移植。
由于fcgi.py文件并不大,因此早晨的时候踌躇满志,以为能够三下五除二将移植工作搞定。调整了几个小的地方,如函数的新名字、变更后的所属模块后,运行python fcgi.py,程序能够正常运行。但是就是无法获得ngnix甩过来的流量,后来通过跟踪源码,发现是py3.x中str和bytes两种数据类型要求更严格所产生的异常导致,做了显示转换后,问题解决。fcgi.py能够获得流量了,但是新的问题出来了,网页送过来的客户端信息数据被粘连在一块,没有被fcgi正确解析,这个问题很好定位,ngnix通过socket方式将客户端参数组包后send给fcgi,fcgi在解析这些信息时,用struct模块的unpack函数进行解析,但是由于unpack函数中str、bytes以及字符长度等问题的交叉缠绕,这种大调整正是python3.x显著不同于python2.x的地方,此类问题集中在fcgi.py的decode_pair函数中,重写了这个函数后,问题解决。
至此,移植过程结束,算下来,花去了我13个小时的时间。收获就是,对ngnix+fastcgi的原理有了一些了解。
- fcgi.py 从python2.x到3.x的移植
- 把项目从Python2.x移植到Python3.x的经验总结
- python技巧31[移植python2.x到3.x]
- python 3.x中列表排序问题,从python2.x过渡到python3.x
- cocos2d-x 从win32到android移植的全套解决方案
- cocos2d-x 从win32到android移植的全套解决方案
- cocos2d-x 从win32到android移植的全套解决方案
- App 从Windows到OS X的移植
- Coco2d-x从Win32移植到Android
- 从Win32移植cocos2d-x到Android
- Python2.x vs Python3——从 raw_input() 到 input()
- Python2.x还是3.x?
- 使用python3自带工具2to3.py 转换 python2.x 代码 到python3
- 基于像素的碰撞检测(移植到cocos2dx 3.x)
- python2.x与3.x除法的区别
- python2.x 3.x的super关键字使用示例
- python2.x与3.x的主要区别笔记
- python2.x与3.x版本print的不同
- mobile 学习之 Windows Message Handling
- 100111 我的目标 -- 百度
- linux下使用wine安装QQ2009成功
- PHP中的MYSQL常用函数总结
- Xen CPU 调度算法对比
- fcgi.py 从python2.x到3.x的移植
- winform中怎么绑定快捷键
- 2010-01-11(心情不要太好哦)
- Ant介绍和使用【转】
- 单片机、嵌入式ARM学习网站推荐(多年的积累)
- flex类的深复制(扩展)
- 经典推荐:怎样学习C语言
- 日期
- spring概述