fcgi.py 从python2.x到3.x的移植

本文记录了作者在使用Python 3.x版本进行Web框架开发时遇到的问题及解决方案,特别是在移植不支持Python 3.x的fcgi.py过程中所遇到的挑战。

      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的原理有了一些了解。

 

如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要追加额外费用)微信小程序是腾讯公司基于微信平台推出的一种轻量级应用形态,它无需用户下载安装即可在微信内直接使用。自2017年正式上线以来,小程序凭借其便捷性、易获取性和出色的用户体验迅速获得市场认可,并成为连接线上线下服务的重要桥梁。小程序的核心特点包括: 零安装:用户只需通过微信扫一扫或搜索功能,即可打开和使用小程序,大大降低了用户的使用门槛和手机存储空间压力。 速度快:加载速度相较于传统的HTML5网页更快,依托于微信强大的基础设施,能够实现近乎原生应用的流畅体验。 跨平台兼容:开发者一次开发,即可在多种终端设备上运行,免除了复杂的适配工作,大大提高了开发效率。 社交属性强:小程序可以无缝嵌入微信生态,支持分享至聊天窗口、朋友圈等社交场景,有利于用户间的传播和裂变增长。 丰富接口能力:提供丰富的API接口,可调用微信支付、位置服务、用户身份识别等多种功能,方便企业进行商业服务的集成与拓展。目前,微信小程序已经覆盖了电商购物、生活服务、娱乐休闲、教育学习、工具助手等多个领域,为数以亿计的用户提供便捷的服务入口,也为众多商家和开发者提供了新的商业模式和创业机会。随着技术的不断升级和完善,小程序已成为现代移动互联网生态中不可或缺的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值