服务器推送事件(server-sent events,SSE)是一种除websocket、ajax简单轮寻外另一种实现服务器数据主动推送数据到浏览器的方式。

这里,举一个的例子来说明如何使用基于pyhon的服务端来实现,为了简单我使用flask框架来实现。关键点有2个:

  1. HTTP响应头中包含content-type:text/event-stream
  2. 流响应
阅读全文

官网在这里,英语好的直接去看官网文档吧,我是英语渣只能翻译个大概;另外注意本文翻译时间,可能你看到的时候官网已经更新了。


flask-socketio赋予了flask程序支持服务端和客户端间双向低延迟通讯的能力,客户端可以使用 SocketIO 库或任何支持与服务端建立长链接的兼容库。

安装

可以直接使用pip安装:

1
pip install flask-socketio

依赖

自从1.0版开始,这个扩展完全兼容了python2.7和python3.3+版本。异步服务的支持基于下面3个选择中的一个:

  • eventlet 是3个选项中性能最高的,同时支持长轮循(long-polling)和WebSocket。
  • gevent 是在以前版本中使用的框架,支持长轮循,如果想支持WebSocket的话需要同时安装gevent-websocket 库。使用gevent和gevent-websocket结合性能也不错,但略低于eventlet。
  • flask 基于Werkzeug的开发服务也能用,不过性能上不如上面2个选项,所以它应该只用于开发时使用。这个选项只支持长轮循。
    本扩展将自动检测哪些异步框架被安装,默认首选eventlet,其次是gevent,最后是flask自带的开发服务。
    对于客户端来说,可以使用官方的Socket.Io来建立于服务端的链接,也有使用swift和c++写成的客户端。非官方的客户端也能工作,只要它实现了Socket.IO 协议。

目前的局限

目前flask-socketio只能同时运行在单个进程中(这里应该指的是一个进程中仅能存在一个实例的意思,而非只能开启一个进程吧…),解决这个限制的工作正在进行中。
(关于升级变化、以及从老版本迁移到新版的注意事项我就不翻译了,因为没用过老版本)

阅读全文

flask常用插件

发布在 Python

2015-08-28更新
不可否认django是一个功能齐全的、文档最完善的、最容易入门的python框架,但随着业务发展,发现并没有用到django最强大、最方便的后台管理功能。同时相比web.py、flask也确实“重”了一些,所以经过考虑决定将框架换为flask。如果说django是一个组装好的变形金刚,那么flask则是乐高积木,小巧而灵活,可以根据需要选择不同的功能扩展。下面列出了我使用过的一些插件,持续补充…

flask官网

https://dormousehole.readthedocs.org/en/latest/index.html
这个就不多解释了。

jinja2

http://docs.jinkan.org/docs/jinja2/index.html
flask默认模板引擎。

sqlalchemy

http://www.sqlalchemy.org/
如果喜欢用ORM操作数据的话,这个可以说是不错的选择,用来替代django自身提供的ORM系统。

flask-sqlalchemy

http://flask-sqlalchemy.pocoo.org/2.0/
这个是flask插件,对sqlalchemy进行了一些封装。

flask-login

https://flask-login.readthedocs.org/en/latest/
提供用户登录、登出等相关操作。

flask-wtf

https://flask-wtf.readthedocs.org/en/latest/
提供表单相关功能,基于wtform.

flask-bcrypt

https://flask-bcrypt.readthedocs.org/en/latest/
提供加密功能,将字符串加密。

flask-user

https://pythonhosted.org/Flask-User/

基本上来说,上面三个插件就可以构造出一个用户系统了,但还有一个完整的实现了相关用户功能的插件叫做flask-user,不过这个插件对于我的业务来说并不是特别适用,需要进行修改的地方过多,所以我就用上面的三个自己写了一个。

flask-cache

https://pythonhosted.org/Flask-Cache/
提供缓存的相关功能。

flask-migrate

https://flask-migrate.readthedocs.org/en/latest/

提供数据库迁移功能,比如改了个字段什么的不用重建数据库了。

flask-script

https://flask-script.readthedocs.org/en/latest/

这个十分好用,用来执行flask脚本的。什么意思呢?就是flask中有很多操作需要上下文环境的,有了这个东西就不用每次都启动flask环境了。结合flask-migrate进行数据库迁移、结合flask-cache进清空缓存都爽歪歪。

flask-restful

https://flask-restful.readthedocs.org/en/0.3.4/

看名也知道了,提供restfulapi接口的,类似django-rest-framework。

flask-less

https://flask-restless.readthedocs.org/en/latest/

也是提供restfulapi接口的,这两个提供接口的插件相比,上一个比较灵活,而这个比较简单快捷。

flask-httpauth

https://flask-httpauth.readthedocs.org/en/latest/

一个简单的HttpAuth插件。

flask-uploads

文件上传的插件,这里需要注意,使用pip安装的flask-uploads是 https://pythonhosted.org/Flask-Uploads/ 这个作者的,还有一个版本的https://github.com/FelixLoether/flask-uploads 这两个并不一样。

flask-cloudy

https://github.com/mardix/flask-cloudy

还是文件上传,支持上传到各种云环境或者本地,我没深入研究有兴趣的可以自己看。

flask-mail

https://pythonhosted.org/flask-mail/

发送邮件的,这里我使用时需要把官网的
from flaskext.mail import Mail
改成
from flask.ext.mail import Mail

评论和分享

  • 第 1 页 共 1 页
作者的图片

Roy

微信公众号:hi-roy


野生程序猿


China