python

python web 框架分析

主流的python web框架 django: 一个大而全的框架 flask: 一个轻量级框架,挺多人使用的 bottle: 一个更加轻量级的框架 tornado: 一个高性能异步框架 web.py: 一个简单易懂的框架 我该选择哪一个web框架 如果是刚入门python的同学,我的建议是使用flask,因为使用这个框架的学习成本是最低的,并且该框架提供了大量的第三方插件,出现问题可以查找的资料也是非常多的。 如果网站是属于高并发,并且是IO密集型的话,我的建议是使用tornado,因为tornado的性能比较强悍,异步特性特别适合IO密集型的情况,当然异步的写法会比同步的纠结一些。 如果是想快速的搭建起一个网站,建议使用django,因为django自带一个非常强悍的admin管理后台,定义好模型和配置好模型之后,就自动完成了管理后台。 flask能否用于商业系统 这个绝对是可行的,

  • yubang
2 min read
python

异步的使用分析

什么是异步 同步很好理解,我们每一个操作都是等待上一个操作完成之后,才继续执行。但是有些操作没有必要等待完成之后才进行下一步操作。举个例子,你在12306买票,当你提交订单并且支付完成之后,是会有短信通知和邮件通知的,但是这两个通知并不是完成之后你才看到支付成功,而是有时候很慢才收到信息。这就是异步处理,把非强依赖的操作独立队列慢慢处理。 异步使用场景 当业务要求短时间响应的时候就需要异步,就像今年初和野熊一起创业那会,遇上一个需求,就是点击然后生成一张海报,但是生成海报是一个耗时数秒的任务,但是由于业务关系,不能让用户等待这么久,所以弄了一个中间页面,然后后台异步生成海报,这样子也避免了并发导致系统崩溃。 异步的实现 异步一般来说就是有独立的进程来处理一些操作,那么这些进程怎么去拿任务呢? web服务把任务信息放入redis的队列,然后独立进程往redis里面拿任务,这种做法优点是门槛比较低,不需要额外学习成本,但是redis毕竟不是专门的做任务队列的,所以在海量数据下表现可能比不上专业的软件。

  • yubang
3 min read