python web 开发中常用的第三方库

大部分人在二三十岁上就死去了,因为过了这个年龄,他们只是自己的影子,此后的余生则是在模仿自己中度过,日复一日,更机械,更装腔作势地重复他们在有生之年的所作所为,所思所想,所爱所恨

这篇除了学习之外,也算是一个扫盲的帖,由于运维出生,写东西也都是仅仅是写点东西,而不从开发的角度看待这个问题,没有构建工具,没有完善的部署,都是单干,很明显不走开发流程,所以看到这篇帖子转发过来

一、Python Web开发中常用的第三方库

经常有朋友问,如果用 Python 来做 Web 开发,该选用什么框架?用 Pyramid 开发 Web 该选用怎样的组合等问题?在这里我将介绍一些 Python Web 开发中常用的第三方库。基本适用于 Django 以外的 Web 框架 (Pyramid, Flask, Tornado, Web.py, Bottle 等).

1.1 ORM

  • SQLAlchemy
    在 ORM 方面,首选 SQLAlchemy,没有之一!
    支持 SQLite, PostgreSQL, MySQL, Oracle, MS-SQL, Firebird, Sybase 等主流关系数据库系统
    支持的 Python 环境有 Python2、Python3,PyPy 以及 Jython。
    主要的特性请移步 Key Features of SQLAlchemy
    推荐和数据库迁移工具 Alemic 搭配使用

  • MongoEngine
    如果你用 MongoDB,推荐 MongoEngine.

1.2 Template Engine

在模板引擎方便选择也是比较多, 有 ChameleonJinja2Mako等可供选择,用过 ChameleonJinja2,性能都非常好.

1.3 Form Engine

1.4 Cache Engine & Session Store

  • Beaker 缓存和 Session 管理首选 Beaker, 没有之一! 可以搭配文件、 dbm 、memcached、内存、数据库、NoSQL 等作为存储后端. 如果你用Pyramid 作为 Web 框架,那么可以直接使用 pyramid_beaker.

二、Others

2.1 环境构建

  • buildout 很强大,参考 用Buildout来构建Python项目
  • virtualenv 这个大家应该都用过,简单易用

2.2 任务队列

  • Celery (芹菜)一个分布式异步任务队列, 很强大!
  • RQ 这是一个轻量级的任务队列,基于Redis, 可以尝试一下。

2.3 WebServer

2.4 工具

  • Fabric, 可以通过它完成自动化部署和常规的运维等工作。《Fabric-让部署变得简单》_PPT
  • Supervisor 一个强大的进程管理工具,用来管理各种服务(比如Gunicorn、Celery等),服务挂掉时 Supervisor 会帮自动重启服务。

2.5 导出报表数据

  • Tablib,这个挺好用,支持导出Excel, JSON, YAML, HTML, TSV, CSV格式数据, 我创建了一个 Pyramid 插件可以集成到 Pyramid 项目中使用 pyramid_tablib
  • 导出 PDF 有 reportlabPyPDF2

2.6 第三方身份验证

  • velruse, 支持各大网站的身份验证, 国内部分我已经加入了 Weibo、Douban、QQ、Taobao、Renren,并 merge 到主版本库中。欢迎使用!

2.7 helper

  • webhelpers, 提供了一系列实用函数, 文档地址

To Be Continued…

  

参考阅读